セルA1:A1000にデータがあります。それはこのように、小さなノートに続く名前のリストです:特定の文字の後にセル内のデータを削除します。
- SAM「速い
- ニック」長い
- 彼らはすべての後に
"
と空間を持っている
トム・」クイック
私は試してみるためにマクロを使っていましたが、何もできませんでした。私はこれをするかもしれない?ここで
セルA1:A1000にデータがあります。それはこのように、小さなノートに続く名前のリストです:特定の文字の後にセル内のデータを削除します。
"
と空間を持っているトム・」クイック
私は試してみるためにマクロを使っていましたが、何もできませんでした。私はこれをするかもしれない?ここで
はマクロなしの気の利いたトリックです:
は、適切な範囲を選択します(あるいは単に列全体を選択するにはA
をクリック)して、Ctrl+F
を行い、Replace
をクリックし、Find
書き込みで正確"*
をしてReplace with
を残しますボックスは空です。今すぐReplace all
をクリックしてください!
これは、置き換えられたボックスを空のままにしたワイルドカードとして*
を使用するため、引用符の後のすべてを置き換えます(および含めます)。
編集:ここで示唆したように、このためのVBAコードです:
Columns("A:A").Replace What:="""*", Replacement:="", LookAt:=xlPart
Sub Macro1()
For Row = 1 To 1000
S = Range("A" & Row).Cells.Value
Pos = InStr(S, Chr(34))
If Pos > 0 Then Range("A" & Row).Cells.Value = Left(S, Pos - 1)
Next
End Sub
本当ですか?なぜこのような状況で 'Find'と' Replace'がうまく動作するのでしょうか? –
Scott、私は同意します。他のアプローチはより速く簡単です。 (私はAlexandreが投稿したFindのワイルドカードについて知りませんでしたが、精神的なツールボックスに入っています)OPはマクロについて話していたので、マクロでやっていました。彼らがより複雑なものに遭遇して正規表現を思いつくことができない場合、彼らには役に立つかもしれません。 – Ernie
簡単!使用しているExcelのバージョンはわかりませんが、簡潔にConvert Text to Columns
を実行してから、セルを区切り記号"
で分割します。これにより、必要なデータと削除できるデータの2つの列が表示されます。
Delimited
を選択Convert Text to Columns
メニューを見つけ、Other
でnext
Data
メニューを見つける:ここ は、Office 2010で散歩ですボックス、タイプ"
Finish
完了!今度は、列Aにすべての名前があり、列Bを削除するだけです。
要約すると、「テキストを列に変換」し、区切り記号"
を使用してセルを分割します。超簡単で高速です。
また、インポートするデータが表示されているセクションが表示されたら、2番目の列を選択して「列をインポートしない(スキップ)」に変更すると、列Bを削除する心配はありません – SeanC
いくつかのオプション:あなたは、さらにその後、値を操作するために必要な場合
が
Range("A1:A1000").Replace """*", vbNullString
を交換して、以下でより適切である:正規表現で
:
Dim str As String, strClean As String
Dim cell As Range
For Each cell In Range("A1:A1000")
With CreateObject("vbscript.regexp")
.Pattern = "\""(.*)"
.Global = True
cell = .Replace(cell, vbNullString)
End With
Next cell
正規表現がなければ10
は、文字列を分割する:あなたは、ソースデータを保持したい場合は
Dim strSplit() As String
Dim cell As Range
For Each cell In Range("A1:A1000")
If (cell.Value <> vbNullString) Then
cell.Value = Split(cell.Value, """")(0)
End If
Next cell
?なぜこのような状況で、 'Find'と' Replace'がループして 'RegEx'を呼ぶのはなぜですか? –
追加ユーザーが処理後に各値で何かをする必要がない限り、この状況では、別のオプションとして置き換えてください。 – InContext
を、あなたはまた、次の列で、簡単なExcelの数式でそれを行うことができます。 =LEFT(A1,SEARCH("""",A1)-1)
押しctrl + f
は、find what
ボックスにreplace tab
、タイプ*
をクリックし、replace all
をクリックしてください:あなたのデータは列Aであると仮定すると、以下の式では名前のみを返します。 replace
ボックスに何も入れる必要はありません。ここでは、.
の後にすべてを置き換えます。
'Text to Columns'を通らずにすばやく簡単に...大きなプログラムの一部としてVBAで '.Replace'メソッドを書く方法をOPに示す価値があります。 –
偉大な答え。常にデータのバックアップを作成してください。 –