删除特定字符后的单元格中的数据

我有单元格A1:A1000中的数据。 这是一个名字后面跟着一个小logging,如下所示:

  • 山姆“快
  • 尼克“长
  • 汤姆“快

他们都在名字后面有一个空格,然后是空格,我想要做的是删除名字后面的所有内容。

我正在玩macros,尝试这样做,但没有得到任何工作。 任何想法我可以做这个?

这是一个没有macros的漂亮技巧:

select适当的范围(甚至只需点击Aselect整个列),然后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中的步骤:

  1. 突出显示列A
  2. findData菜单
  3. findConvert Text to Columns菜单
  4. selectDelimited然后点击
  5. Other框中,input"
  6. 点击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 。 在这里,你正在取代一切.