我在单元格A1:A1000中有数据。这是一个名单后跟一个小注释,如下所示:
它们都有"
,后面有一个空格,然后是注释。我要做的是删除名称后的所有内容。
我正在使用宏来尝试这样做,但无法获得任何工作。知道怎么做这个吗?
答案 0 :(得分:26)
这是一个没有宏的漂亮技巧:
选择正确的范围(或者甚至只需点击A
选择整个列),然后Ctrl+F
,点击Replace
,Find
写完"*
Replace with
1}}并将Replace all
框留空。现在点击*
和tada!
它替换了引用之后的所有内容(包括),因为它使用Columns("A:A").Replace What:="""*", Replacement:="", LookAt:=xlPart
作为通配符,您将替换框留空。
编辑:正如这里建议的那样是VBA代码:
{{1}}
答案 1 :(得分:5)
简单!我不知道您使用的是哪个版本的Excel,但总之,您想要执行Convert Text to Columns
,然后使用{{1的分隔符拆分单元格}}。这将为您提供两列,一个您想要的数据,另一个您可以删除。
以下是Office 2010中的演练:
"
菜单Data
菜单Convert Text to Columns
并点击Delimited
next
框中,输入Other
"
完成!现在,您在A栏中拥有所有名称,您只需删除B列。
总而言之,执行“将文本转换为列”,然后使用Finish
的分隔符拆分单元格。超级简单快捷。
答案 2 :(得分:4)
几个选项:
<强>替换强>
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
答案 3 :(得分:2)
如果您想保留源数据,也可以在下一栏中使用简单的Excel公式进行操作。假设您的数据位于A列中,以下公式将仅返回名称:=LEFT(A1,SEARCH("""",A1)-1)
答案 4 :(得分: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
答案 5 :(得分:0)
按ctrl + f
,点击replace tab
,在*
框中输入find what
,然后点击replace all
。无需在replace
框中添加任何内容。在这里,您将在.
之后替换所有内容。