Одной из самых удобных функций Excel является функция преобразования текста в столбцы, которая позволяет легко разбивать содержимое ячеек на отдельные ячейки в соответствии с указанными вами критериями. Один из методов использования этой функции — позволить ему распознавать символы в ячейках и использовать эти символы для запуска того места, где должно произойти разделение. Этот тип разделения называется разделением delimited.

Вам может быть интересно, как можно выполнить операцию преобразования текста в столбцы с разделителями в макрос, который вы, возможно, пишете. Это достаточно просто сделать, используя метод TextToColumns для созданного вами выделения. Рассмотрим следующий очень простой макрос:

Sub ExampleSplit1()

Selection.TextToColumns _       Destination:=Range("A2"), _       DataType:=xlDelimited, _       TextQualifier:=xlDoubleQuote, _       ConsecutiveDelimiter:=False, _       Tab:=True, _       Semicolon:=False, _       Comma:=False, _       Space:=False, _       Other:=True, _       OtherChar:="-"

End Sub

Обратите внимание на все переменные, которые вы можете установить для метода TextToColumns.

Большинство этих переменных необходимы только потому, что это разделение с разделителями; переменные устанавливают то, что используется в качестве разделителя в методе.

Начиная со строки табуляции, переменные напрямую соответствуют настройкам, которые вы сделали бы на шаге 2 мастера преобразования текста в столбцы, если бы вы использовали эту функцию вручную. Вы можете установить для табуляции, точки с запятой, запятой и пробела значение True или False, в зависимости от того, хотите ли вы использовать этот символ в качестве разделителя.

Вы также можете установить для переменной Other значение True или False, в зависимости от того, хотите ли вы иметь «определяемый пользователем» разделитель. Если вы установите для него значение True, вы должны установить переменную OtherChar равной символу, который вы хотите использовать в качестве разделителя.

Если вы используете метод TextToColumns несколько раз в одном макросе, единственное, что вам нужно сделать при вызовах, следующих за первым, — это изменить переменные, которые отличаются от предыдущего вызова. Например, предположим, что вы вызываете метод дважды в одном макросе, и в первый раз вы хотите, чтобы разделение было на экземпляре символа тире, но во второй раз вы хотите, чтобы он был на любом экземпляре строчного x . Вы можете собрать макрос следующим образом:

Sub ExampleSplit2()

Dim objRange1 As Range     Dim objRange2 As Range

'Set up the ranges     Set objRange1 = Range("A2:A20")

Set objRange2 = Range("A21:A35")



'Do the first parse     objRange1.TextToColumns _       Destination:=Range("A2"), _       DataType:=xlDelimited, _       Tab:=False, _       Semicolon:=False, _       Comma:=False, _       Space:=False, _       Other:=True, _       OtherChar:="-"



'Do the second parse     objRange2.TextToColumns _       Destination:=Range("A21"), _       DataType:=xlDelimited, _       OtherChar:="x"

End Sub

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (8317) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Delimited_Text-to-Columns_in_a_Macro [Преобразование текста в столбцы с разделителями в макросе].