10

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

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

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

我正在玩宏来尝试这样做,但无法得到任何工作。知道我该怎么做吗?

4

6 回答 6

26

这是一个没有宏的绝妙技巧:

选择适当的范围(或者甚至只需单击A以选择整个列),然后执行Ctrl+F,单击ReplaceFind准确写入"*并将Replace with框留空。现在点击Replace all和tada!

它将引号之后(包括)的所有内容替换为空,因为它*用作通配符,您将替换框留空。

编辑:这里建议的是 VBA 代码:

Columns("A:A").Replace What:="""*", Replacement:="", LookAt:=xlPart
于 2012-12-19T17:45:48.063 回答
5

简单的!我不知道您使用的是哪个版本的 Excel,但简而言之,您想做 aConvert Text to Columns然后使用". 这将为您留下两列,一列是您想要的数据,另一列您可以删除。

以下是 Office 2010 中的演练:

  1. 突出显示 A 列
  2. 找到Data菜单
  3. 找到Convert Text to Columns菜单
  4. 挑选Delimited并击打next
  5. Other框中,键入"
  6. Finish

完毕!现在你的所有名字都在 A 列中,你可以删除 B 列。

总而言之,执行“将文本转换为列”,然后使用". 超级简单快捷。

于 2012-12-19T17:49:46.247 回答
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
于 2012-12-19T18:16:23.000 回答
2

如果您想保留源数据,也可以使用下一列中的简单 Excel 公式来完成。假设您的数据在 A 列中,以下公式将仅返回名称:=LEFT(A1,SEARCH("""",A1)-1)

于 2012-12-19T21:38:33.650 回答
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
于 2012-12-19T17:49:22.560 回答
0

ctrl + f,单击replace tab*find what框中键入,然后单击replace all。不需要在replace盒子里放任何东西。在这里,您将替换之后的所有内容.

于 2017-09-12T13:34:25.637 回答