如何根据给定的单词在excel中拆分文本字符串?

时间:2019-01-14 18:46:18

标签: excel string text split

我在excel中有公司,城市和州的组合列表,每个字符串。我想根据给定的单词(城市名称)将单词字符串拆分,结果分为两列,一列带有公司名称,一列带有城市和州。

分隔空格或符号定界符不起作用,因为这些公司都不全都有一个单词名称,而城市名称都相似。

我有成千上万的记录,也想循环播放。我已经尝试在VBA中使用SPLIT()函数,但是不确定如何循环它。

Initial                     Splitting word  Result 1     Result 2
Clean Choc Detroit MI       Detroit         Clean Choc  Detroit MI
Space Kites Des Moines IA   Des Moines      Space Kites Des Moines IA
Tattoosie Chicago IL        Chicago         Tattoosie   Chicago IL
One for Two New York City NYNew York City   One for Two New York City NY
Limonistas Carlsbad CA      Carlsbad        Limonistas  Carlsbad CA

2 个答案:

答案 0 :(得分:1)

如果要避免使用VBA,可以使用以下公式:

=LEFT(A2,FIND(B2,A2)-2)

=RIGHT(A2,LEN(A2)-FIND(B2,A2)+1)

答案 1 :(得分:0)

您可以将其用作两个函数(一个返回左部分,另一个返回右部分):

Function split1(str As String, dlmtr As String) As String
Dim pt1() As String
pt1 = Split(str, dlmtr)
split1 = pt1(0)
End Function

Function split2(str As String, dlmtr As String) As String
Dim pt2() As String
pt2 = Split(str, dlmtr)
split2 = dlmtr & " " & pt2(1)
End Function

请注意,预期的分隔符是区分大小写

enter image description here

或作为子例程(必要时进行调整):

Sub split_strings()
Dim rng As Range
Dim dmltr As String: dmltr = "Detroit"

Set rng = Range("A1")

Dim splt() As String
splt = Split(rng.Value, dmltr)
rng.Offset(0, 1).Value = splt(0)
rng.Offset(0, 2).Value = dmltr & " " & splt(1)
End Sub