Разделенная строка с несовместимым разделителем - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть столбец, который содержит город, штат и почтовый индекс.

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

Ответы [ 4 ]

2 голосов
/ 22 февраля 2011

Вы можете сделать это следующим образом, если хотите использовать 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
0 голосов
/ 22 февраля 2011

Предположим, ваши ячейки в столбце 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
0 голосов
/ 22 февраля 2011

Я немного не уверен, пытаетесь ли вы сделать это в макросе или электронной таблице. Следующее будет работать в электронной таблице и может быть изменено для макроса.

Предполагается, что ваш столбец данных в столбце D, и этот пример разбивает строку в D4.

Поле D5 имеет функцию

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

Поле D6 имеет функцию

=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))))
0 голосов
/ 22 февраля 2011

Существует пункт меню «Текст в столбцы», который запускает мастер для этого.(Если вам нужен код VBA, вы можете включить макро-рекордер и посмотреть, что он генерирует.)

...