我在单元格 A1:A1000 中有数据。它是一个名称列表,后跟一个小注释,如下所示:
- 山姆“快
- 尼克长
- 汤姆“快
它们都"
在名称后有一个空格,然后是注释。我要做的是删除名称后的所有内容。
我正在玩宏来尝试这样做,但无法得到任何工作。知道我该怎么做吗?
这是一个没有宏的绝妙技巧:
选择适当的范围(或者甚至只需单击A
以选择整个列),然后执行Ctrl+F
,单击Replace
,Find
准确写入"*
并将Replace with
框留空。现在点击Replace all
和tada!
它将引号之后(包括)的所有内容替换为空,因为它*
用作通配符,您将替换框留空。
编辑:这里建议的是 VBA 代码:
Columns("A:A").Replace What:="""*", Replacement:="", LookAt:=xlPart
简单的!我不知道您使用的是哪个版本的 Excel,但简而言之,您想做 aConvert Text to Columns
然后使用"
. 这将为您留下两列,一列是您想要的数据,另一列您可以删除。
以下是 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
盒子里放任何东西。在这里,您将替换之后的所有内容.
。