如何使用excel将文本与逗号和空格分开

时间:2017-01-23 08:30:37

标签: excel

我在格式为Clare, South Australia 5453的单元格中有一些文字。 Red Bluff, California 96080 订单为citystatezip code

现在我想使用excel将这个文本分成三个部分,比如使用excel在不同单元格中的ClareSouth Australia5453

希望有人可以给我一个暗示。非常感谢。

2 个答案:

答案 0 :(得分:1)

如果您需要一步完成,我建议您为此编写一个宏。 如果您可以分两步执行此操作,则可以使用“数据”选项卡中的“文本到列”功能和公式。

首先,您可以将文本拆分为逗号中的列,因此您可以将Clare和South Austria 5453分成两列。

然后你可以进入包含州和邮政编码的单元格,并使用公式来查找第一个数值:

=MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))

(有关详细信息,请参阅:https://exceljet.net/formula/split-text-and-numbers

这个解决方案当然不起作用。如果您想在没有帮助列的情况下进行拆分,我建议您编写一个简短的宏来执行此操作。

答案 1 :(得分:1)

您可以使用以下代码创建新的宏。您可以通过确保当前单元格(即ActiveCell)位于要转换的文本单元格之一来使用它。然后你执行宏,它应该将3个项目放在相邻的单元格中(我假设它是空的)。

宏使用正则表达式(由' strPattern'定义),它将接收逗号之前由空格分隔的多组字符。它将在逗号后执行相同操作,然后单独匹配邮政编码。

Public Sub simpleRegex()
    Dim strPattern As String: strPattern = "^\s*((\w+\s*){1,}),\s*((\w+\s*){1,})\s+(\d+)"
    Dim regEx As Object
    Dim strInput As String
    Dim matches As Object
    Dim Myrange As Range

    Set regEx = CreateObject("vbscript.regexp")

    strInput = ActiveCell.Value

    With regEx
      .Global = True
      .MultiLine = True
      .IgnoreCase = True
      .Pattern = strPattern
    End With

    If regEx.Test(strInput) Then
       Set matches = regEx.Execute(strInput)
       ActiveCell.Offset(0, 1).Value = matches(0).submatches(0)
       ActiveCell.Offset(0, 2).Value = matches(0).submatches(2)
       ActiveCell.Offset(0, 3).Value = matches(0).submatches(4)
    Else
       MsgBox ("Not matched")
    End If
End Sub

这里需要注意的是,您可能需要使用它来处理您可能遇到的所有字符串变体。它确实适用于您提供的两个示例。