删除特定字符后的单元格中的数据
我有单元格A1:A1000中的数据。 这是一个名字后面跟着一个小logging,如下所示:
- 山姆“快
- 尼克“长
- 汤姆“快
他们都在名字后面有一个空格,然后是空格,我想要做的是删除名字后面的所有内容。
我正在玩macros,尝试这样做,但没有得到任何工作。 任何想法我可以做这个?
这是一个没有macros的漂亮技巧:
select适当的范围(甚至只需点击A
select整个列),然后Ctrl+F
,点击Replace
,在Find
准确地写入"*
并保持Replace with
空。现在点击Replace all
和tada!
它将(和包括)引号之后的所有内容都replace为空,因为它使用*
作为通配符,将replace框留空。
编辑:build议这里是这个VBA代码:
Columns("A:A").Replace What:="""*", Replacement:="", LookAt:=xlPart
简单! 我不知道你使用的是什么版本的Excel,但是总之你想做一个Convert Text to Columns
,然后使用分隔符"
来分割单元格。这会给你留下两列,你想要的数据之一和一个你可以删除。
以下是Office 2010中的步骤:
- 突出显示列A
- find
Data
菜单 - find
Convert Text to Columns
菜单 - select
Delimited
然后点击 - 在
Other
框中,input"
- 点击
Finish
完成! 现在你在A列中有你的所有名字,你可以删除B列。
总结一下,做一个“将文本转换为列”,然后使用"
。 "
分隔符来分割单元格。
几个选项:
更换
Range("A1:A1000").Replace """*", vbNullString
如果你需要进一步操纵价值,那么下面的更合适:
与正则expression式:
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
没有正则expression式,分割string:
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
。 在这里,你正在取代一切.
。