Как разбить строку текста в Excel на основе заданного слова? - PullRequest
0 голосов
/ 14 января 2019

У меня есть список комбинаций компаний, городов и штатов в Excel, каждая строка. Я хотел бы разбить строку слов на основе заданного слова (название города) и получить результат в два столбца, один с названием компании, один с городом и штатом.

Разделение по пробелам или символам-разделителям не работает, потому что у компаний не все названия одного слова и одинаковые для городов.

У меня есть тысячи записей, и я бы тоже хотел это зациклить. Я пробовал функцию SPLIT () в VBA, но не уверен, как это сделать.

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 голосов
/ 14 января 2019

Если вы хотите избежать VBA, вам подойдут следующие формулы:

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

=RIGHT(A2,LEN(A2)-FIND(B2,A2)+1)
0 голосов
/ 14 января 2019

Вы можете использовать это как две функции (одна возвращает левую часть, другая возвращает правую часть):

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
...