セル A1:A1000 にデータがあります。次のように、名前のリストの後に小さなメモが続きます。
- サム「早く
- ニック・ロング
- トム「早く
それらはすべて"
、名前の後にスペースがあり、その後にメモがあります。私がやろうとしているのは、名前の後のすべてを削除することです。
これを行うためにマクロをいじっていましたが、何も機能しませんでした。どうすればこれを行うことができるでしょうか?
これは、マクロを使用しない気の利いたトリックです。
適切な範囲を選択し (または単にクリックしてA
列全体を選択することもできます)、 を実行しCtrl+F
、を正確に入力して、ボックスを空のままにします。今すぐクリックしてタダ!Replace
Find
"*
Replace with
Replace all
*
置換ボックスを空のままにしたワイルドカードとして使用するため、引用符の後 (および引用符を含む) はすべて何も置き換えません。
編集:ここで示唆されているように、これのVBAコードは次のとおりです。
Columns("A:A").Replace What:="""*", Replacement:="", LookAt:=xlPart
簡単!Convert Text to Columns
使用しているExcelのバージョンはわかりませんが、要するに、を実行してから、区切り記号を使用してセルを分割したいと考えています"
。これにより、必要なデータと削除できるデータの 2 つの列が残ります。
Office 2010 のウォークスルーは次のとおりです。
Data
メニューを見つけるConvert Text to Columns
メニューを見つけるDelimited
アンドヒットnext
Other
ボックスに、次のように入力します。"
Finish
終わり!これで、すべての名前が列 A に表示され、列 B を削除できます。
要約すると、「テキストを列に変換」を実行してから、区切り文字を使用してセルを分割し"
ます。超簡単で速い。
いくつかのオプション:
交換
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
正規表現を使用しない場合、文字列を分割します。
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
ソースデータを保持したい場合は、次の列の簡単なExcel数式を使用して保持することもできます。データが列Aにあるとすると、次の数式は名前のみを返します。=LEFT(A1,SEARCH("""",A1)-1)
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
を押しctrl + f
て をクリックし、ボックスreplace tab
に入力*
してをクリックします。箱に何も入れる必要はありません。ここでは、 の後のすべてを置き換えています。find what
replace all
replace
.