将分隔string分隔符不一致

我有一个包含城市,州和邮政编码的专栏。

CITY_STATE_ZIP -------------------------------------------------- Monroe, IN 46711 South Bend, IN 46615 Alexandria, IN 46001 

我希望将三个字“CITY_STATE_ZIP”拆分成不同的列。

  CITY STATE ZIP ---------- ---------- -------------------- Monroe IN 46711 South Bend IN 46615 Alexandria IN 46001 

如果您想使用VBA,您可以按如下所示进行操作。

 Sub splitIntoCols() Dim oRange As Excel.Range Dim oCell As Excel.Range Dim vValue As Variant Dim sCity As String Dim sState As String Dim sZipCode As String Set oRange = ActiveWorkbook.Sheets(1).Range("A3:A100") For Each oCell In oRange 'Takes the whole value vValue = oCell.Value 'Retrieve the City name (with or without spaces) sCity = Left(vValue, InStr(vValue, ",") - 1) 'Remove the city name from the array vValue = Trim(Mid(vValue, InStr(vValue, ",") + 1)) 'Split the value by spaces vValue = split(vValue, " ") sState = vValue(0) sZipCode = vValue(1) Next End Sub 

有一个菜单项“文本到列”,启动一个向导来做到这一点。 (如果你需要VBA代码,你可以打开macroslogging器,看看它产生了什么。)

假设您的单元格在列A中:

 Sub a() Dim r As Range Set r = Range(Range("A1"), Range("A1").End(xlDown)) For Each k In r Cells(k.Row, 4) = Mid(k, Len(k) - 5) Cells(k.Row, 3) = Mid(k, Len(k) - 7, 2) Cells(k.Row, 2) = Mid(k, 1, Len(k) - 10) Next k End Sub 

我不确定你是否试图在macros或电子表格中这样做。 以下将在电子表格中工作,并可以修改macros。

假设列D中的数据列,并且此示例正在拆分D4中的string。

字段D5具有该function

 =LEFT(D4, FIND(",",D4)-1) 

字段D6具有该function

 =LEFT(MID(D4,FIND(",",D4)+2,LEN(D4)),FIND(" ", MID(D4,FIND(",",D4)+2,LEN(D4)))) 

场D7有

 =RIGHT(MID(D4,FIND(",",D4)+2,LEN(D4)),LEN(MID(D4,FIND(",",D4)+2,LEN(D4))) -FIND(" ", MID(D4,FIND(",",D4)+2,LEN(D4))))