如何使用Excel以逗号和空格分隔文本

我有一些格式像Clare, South Australia 5453格式的文本。 And Red Bluff, California 96080订单是citystatezip code

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

希望有人能给我一个提示。 非常感谢。

如果你需要一步完成,我build议你写一个macros。 如果您可以分两步进行操作,则可以使用“数据”选项卡和公式中的“文本到列”function。

首先,您可以将文本分割为逗号分隔的列,因此您可以将克莱尔和南奥地利5453分为两列。

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

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

(欲了解更多信息,请参阅: https : //exceljet.net/formula/split-text-and-numbers )

当然,这个解决scheme并不适用。 如果你想分裂没有帮助列,我会build议写一个短的macros来做到这一点。

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

macros使用一个正则expression式(由'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 

注意这里是你可能要玩的所有可能遇到的string变化。 它在你提供的两个例子上工作。