Из этого туториала Вы узнаете, как преобразовать строку текста в одной ячейке в несколько столбцов с помощью метода Range TextToColumns в VBA.
Текст в столбцы
В Диапазон.TextToColumns Метод в VBA - это мощный инструмент для очистки данных, которые были импортированы, например, из текстовых или CSV-файлов.
Рассмотрим следующий рабочий лист.
Данные поступили в Excel в одном столбце и разделены кавычками.
Вы можете использовать метод Range TextToColumns для разделения этих данных на столбцы.
Синтаксис TextToColumns
выражение.TextToColumns (Место назначения, Тип данных, TextQualifier, ПоследовательныйDelimiter, Вкладка, Точка с запятой, Запятая, Космос, Другой, Другое, FieldInfo, Десятичный разделитель, ТысячиСепаратор, TrailingMinusNumbers)
Выражение
Это диапазон ячеек, который вы хотите разделить, например: Диапазон («A1: A23»).
Все аргументы в методе TextToColumns являются необязательными (они заключены в квадратные скобки).
Место назначения
Куда вы хотите поместить результат - часто вы переопределяете данные и разделяете их в одном месте.
Тип данных
Тип используемого вами синтаксического анализа текста - это может быть xlDelimited (по умолчанию, если не указано), или xlFixedWidth.
TextQualifier
Если у вас есть кавычки (одинарные или двойные) вокруг каждого поля в тексте, который вы разделяете, вам необходимо указать, одинарные они или двойные.
ConsequtiveDelimiter
Это либо истина, либо ложь и указывает VBA рассматривать 2 одинаковых разделителя вместе, как если бы это был 1 разделитель.
Вкладка
Это либо Правда из Ложь, По умолчанию Ложь - это сообщает VBA, что данные разделены табуляцией.
Точка с запятой
Это либоПравда из Ложь, По умолчанию Ложь - это говорит VBA, что данные разделены точкой с запятой.
Космос
Это либо Правда из Ложь, По умолчанию Ложь - это сообщает VBA, что данные разделены пробелом.
Другой
Это либо Правда из Ложь, По умолчанию Ложь. Если вы установите это значение True, то следующий аргумент, Другое необходимо уточнить.
Другое
Это символ, которым разделяется текст (например: или |).
FieldInfo
Это массив, содержащий информацию о типе разделяемых данных. Первое значение в массиве указывает номер столбца в данных, а второе значение указывает константу, которую вы собираетесь использовать для отображения требуемого типа данных.
Примером для 5 столбцов с типами данных текст, числа и даты могут быть:
Массив (Массив (1, xlTextFormat), Массив (2, xlTextFormat), Массив (3, xlGeneralFormat), Массив (4, xlGeneralFormat), Массив (5, xlMDYFormat))
Другой способ установить это:
Массив (Массив (1, 2), Массив (2, 2), Массив (3, 1), Массив (4, 1), Массив (5, 3))
Числа во втором столбце - это значения констант, где константа xlTextFormat имеет значение 2, xlGeneralFormat (по умолчанию) имеет значение 1, а xlMDYFormat имеет значение 3.
Десятичный разделитель
Вы можете указать десятичный разделитель, который VBA должен использовать, если в данных есть числа. Если опущено, будет использоваться системная настройка, которая обычно представляет собой точку.
ТысячиСепаратор
Вы можете указать разделитель тысяч, который VBA должен использовать, если в данных есть числа. Если опущено, будет использоваться системная настройка, обычно это запятая.
TrailingMinusNumbers
Этот аргумент в основном предназначен для совместимости данных, которые генерируются из старых систем, где знак минус часто ставился после числа, а не перед ним. Вы должны установить это значение True, если отрицательные числа имеют знак минус позади них. По умолчанию - False.
Преобразование текста в столбцы
Следующая процедура преобразует данные Excel выше в столбцы.
12345678910111213141516 | Sub TextToCol1 ()Диапазон ("A1: A25"). TextToColumns _Назначение: = Диапазон ("A1: A25"),Тип данных: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Tab: = False, _Точка с запятой: = False, _Запятая: = Ложь,Пробел: = True, _Другое: = Ложь, _FieldInfo: = Массив (Массив (1, 1), Массив (2, 1), Массив (3, 1), Массив (4, 1), Массив (5, 1)), _DecimalSeparator: = "." , _ThousandsSeparator: = ",", _TrailingMinusNumbers: = TrueКонец подписки |
В описанной выше процедуре мы заполнили все параметры. Однако для многих параметров установлено значение false или значение по умолчанию, и в этом нет необходимости. Более чистая версия вышеупомянутой процедуры изложена ниже. Вам необходимо использовать имена параметров, чтобы указать, какие параметры мы используем.
1234567 | Sub TextToCol2 ()Диапазон ("A1: A25"). TextToColumns _Тип данных: = xlDelimited, _TextQualifier: = xlDoubleQuote, _ConsecutiveDelimiter: = True, _Пробел: = True,Конец подписки |
На самом деле требуется всего 4 параметра - данные разделяются двойными кавычками, вы хотите, чтобы последовательные кавычки обрабатывались как одна, а данные разделялись пробелом!
Для еще более быстрой строки кода мы могли бы опустить имена параметров, но тогда нам нужно будет поставить запятые, чтобы сохранить место параметра. Вам нужно ввести информацию только до последнего используемого параметра - в данном случае пробел, разделяющий данные, который является 8-м параметром.
123 | Sub TextToCol3 ()Диапазон ("A1: A25"). TextToColumns, xlDelimited, xlDoubleQuote, True,,,, TrueКонец подписки |
После выполнения любой из описанных выше процедур данные будут разделены, как показано на рисунке ниже.