我有一个包含在单元格A1:A1000中的数据,它是一个名字列表后面跟着一个小注释,像这样:
- sam" fast
- nick" long
- tom" quick
所有这些都有"
和空格,在名字后面,然后是注释。我正在尝试的是删除名字后面的所有内容。
我尝试使用宏来做这个操作,但什么都没能做到。你有什么想法吗?
这里是一个很不错的技巧,而不需要使用宏:
选择正确的范围(甚至只需点击A
以选择整个列),然后按Ctrl+F
,点击替换
,在查找内容
中写入"*
并将替换为
框留空。现在点击全部替换
,完成!
它使用*
作为通配符,并将替换框保留为空,因此它会用空白替换引号后面(包括引号本身)的所有内容。
编辑:如建议所示,以下是VBA代码:
Columns("A:A").Replace What:="""*", Replacement:="", LookAt:=xlPart
"
来拆分单元格。这将使您得到两列,一列是您想要的数据,而另一列可以直接删除。"
"
来拆分单元格。非常简单快捷。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
查找
和替换
功能如此容易使用呢? - Scott Holtzman按下 ctrl + f
,点击 替换选项卡
,在 查找内容
框中键入 *
,然后点击 全部替换
。无需在 替换为
框中输入任何内容。这样你就可以替换掉 .
后面的所有内容。
.Replace
方法,以防他需要将其作为更大程序的一部分。 - Scott Holtzman