VBS разделить один столбец на два столбца

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

    First_Name_1 Last_Name_1
    First_Name_2 Last_Name_2
    First_Name_3 Last_Name_4

Имя и фамилия разделены пробелом. Как я могу разделить этот столбец на два столбца, используя скрипт Visual Basic, чтобы у меня было First_Name в одном столбце и Last_name в столбце рядом с ним?

Уже пробовал этот код, но не могу заставить его работать.

    objExcel.ActiveSheet.Columns(4).Select
    Do Until IsEmpty(ActiveCell)
    'Search for position of space within the cell
    SplitPoint = InStrRev(ActiveCell, " ", -1, vbTextCompare)
    'Put the last name in the column next to the source column
    ActiveCell.Offset(0, 1) = Trim(Left(ActiveCell, SplitPoint))
    'Replace the source column with the first name
    ActiveCell.Offset(0, 0) = Trim(Mid(ActiveCell, SplitPoint))
    Loop

Заранее спасибо!

2 ответа

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

objExcel.ActiveSheet.Columns(4).TextToColumns , , , , , , , True

Может иметь больше смысла с показанными параметрами. Ваши данные разделены пробелом, поэтому нам просто нужно установить 8-й параметр в True, Остальные могут быть опущены, чтобы принять значения по умолчанию.

objExcel.ActiveSheet.Columns(4).TextToColumns _
    , _        ' Destination (optional, defaults to source)
    , _        ' DataType (optional, defaults to xlDelimited)
    , _        ' TextQualifier (optional, defaults to xlTextQualifierDoubleQuote)
    , _        ' ConsecutiveDelimiter
    , _        ' Tab-delimited? (optional, defaults to False)
    , _        ' Semicolon-delimited? (optional, defaults to False)
    , _        ' Comma-delimited? (optional, defaults to False)
    True       ' Space-delimited?

Вы не двигаетесь к следующей ячейке диапазона...

Добавлять:

ActiveCell.Offset (1, 0). Активировать

Я бы добавил что-нибудь, чтобы проверить наличие двойных пробелов (убрать одно), без пробелов и двойных имен или инициалов (Мэри Лу Смит, Джон М. Льюис).

Чао

Другие вопросы по тегам