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

时间:2012-12-19 17:36:41

标签: excel vba excel-vba

我在单元格A1:A1000中有数据。这是一个名单后跟一个小注释,如下所示:

  • sam“fast
  • nick“long
  • tom“quick

它们都有",后面有一个空格,然后是注释。我要做的是删除名称后的所有内容。

我正在使用宏来尝试这样做,但无法获得任何工作。知道怎么做这个吗?

6 个答案:

答案 0 :(得分:26)

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

选择正确的范围(或者甚至只需点击A选择整个列),然后Ctrl+F,点击ReplaceFind写完"* 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中的演练:

  1. 突出显示A列
  2. 找到"菜单
  3. 找到Data菜单
  4. 选择Convert Text to Columns并点击Delimited
  5. next框中,输入Other
  6. 点击"
  7. 完成!现在,您在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框中添加任何内容。在这里,您将在.之后替换所有内容。