Оглавление
В учебнике показано, как использовать совершенно новую функцию TEXTSPLIT для разделения строк в Excel 365 по любому указанному вами разделителю.
Могут возникнуть различные ситуации, когда вам нужно разделить ячейки в Excel. В предыдущих версиях мы уже имели ряд инструментов для выполнения этой задачи, таких как "Текст в столбцы" и "Заполнить флэш". Теперь у нас также есть специальная функция для этого, TEXTSPLIT, которая может разделить строку на несколько ячеек в столбцах или/и строках на основе параметров, которые вы укажете.
Функция Excel TEXTSPLIT
Функция TEXTSPLIT в Excel разделяет текстовые строки по заданному разделителю на столбцы и/или строки. В результате получается динамический массив, который автоматически заполняет несколько ячеек.
Функция принимает до 6 аргументов, из которых обязательными являются только первые два.
TEXTSPLIT(text, col_delimiter, [row_delimiter], [ignore_empty], [match_mode], [pad_with])текст (обязательно) - текст для разбиения. Может быть представлен в виде строки или ссылки на ячейку.
разделитель колонок (обязательно) - символ(ы), указывающий(ие), где разделить текст на колонки. Если опущен, разделитель строк должны быть определены.
разделитель строк (необязательно) - символ(ы), указывающий(ие), где разделить текст по строкам.
ignore_empty (необязательно) - указывает, игнорировать ли пустые значения или нет:
- FALSE (по умолчанию) - создавать пустые ячейки для последовательных разделителей без значения между ними.
- TRUE - игнорировать пустые значения, т.е. не создавать пустые ячейки для двух или более последовательных разделителей.
режим соответствия (необязательно) - определяет чувствительность к регистру для разделителя. По умолчанию включено.
- 0 (по умолчанию) - чувствительность к регистру
- 1 - нечувствительный к регистру
pad_with (необязательно) - значение, используемое вместо отсутствующих значений в двумерных массивах. По умолчанию используется ошибка #N/A.
Например, чтобы разделить текстовую строку в A2 на несколько ячеек, используя запятую и пробел в качестве разделителя, используется следующая формула:
=TEXTSPLIT(A2, ", ")
наличие тексплита
Функция TEXTSPLIT доступна только в Excel для Microsoft 365 (Windows и Mac) и Excel для веб.
Советы:
- В версиях Excel, где функция TEXTSPLIT недоступна (кроме Excel 365), для разделения ячеек можно использовать мастер "Текст в столбцы".
- Для выполнения обратной задачи, т.е. объединения содержимого нескольких ячеек в одну с использованием определенного разделителя, следует использовать функцию TEXTJOIN.
Основная формула TEXTSPLIT для разделения ячейки в Excel
Для начала давайте посмотрим, как использовать формулу TEXTSPLIT в ее простейшей форме для разделения текстовой строки по определенному разделителю.
Разделить ячейку по горизонтали по столбцам
Чтобы разделить содержимое заданной ячейки на несколько столбцов, укажите ссылку на ячейку, содержащую исходную строку для первого ( текст ) аргумент и разделитель, который отмечает точку, где должно произойти разделение, для второго ( разделитель колонок ) аргумент.
Например, чтобы разделить строку в A2 по горизонтали запятой, используется следующая формула:
=TEXTSPLIT(A2, ",")
В качестве разделителя мы используем запятую, заключенную в двойные кавычки (",").
В результате каждый элемент, разделенный запятой, попадает в отдельный столбец:
Разделите ячейку по вертикали на строки
Чтобы разделить текст на несколько строк, третий аргумент ( разделитель строк ) - это место, где вы размещаете разделитель. Второй аргумент ( разделитель колонок ) в этом случае опускается.
Например, чтобы разделить значения в A2 по разным строкам, используется следующая формула:
=TEXTSPLIT(A2, ,",")
Обратите внимание, что в обоих случаях формула вводится только в одну ячейку (C2). В соседние ячейки возвращаемые значения проливаются автоматически. Полученный массив (который называется диапазоном разлива) выделяется синей рамкой, указывая на то, что все внутри него вычисляется по формуле в верхней левой ячейке.
Разделение текста по подстроке
Во многих случаях значения в исходной строке разделяются последовательностью символов, типичный пример - запятая и пробел. Чтобы справиться с этим сценарием, используйте подстроку в качестве разделителя.
Например, чтобы разделить текст в A2 на несколько колонок запятой и пробелом, используйте строку ", " для разделитель колонок .
=TEXTSPLIT(A2, ", ")
Эта формула помещается в ячейку B2, а затем вы копируете ее вниз через столько ячеек, сколько необходимо.
Разделить строку на столбцы и строки одновременно
Чтобы разделить текстовую строку на строки и столбцы за один раз, определите оба разделителя в формуле TEXTSPLIT.
Например, чтобы разделить текстовую строку в A2 по столбцам и строкам, мы передаем:
- Знак равенства ("=") для разделитель колонок
- Запятая и пробел (", ") для разделитель строк
Полная формула имеет следующий вид:
=TEXTSPLIT(A2, "=", ", ")
В результате получается двумерный массив, состоящий из 2 столбцов и 3 строк:
Разделение ячеек несколькими разделителями
Для обработки нескольких или непоследовательных разделителей в исходной строке используйте константу массива, например {"x", "y", "z"} для аргумента разделителя.
На скриншоте ниже текст в A2 разделен запятыми (",") и точками с запятой (";") с пробелами и без пробелов. Чтобы разделить строку по вертикали на строки по всем 4 вариантам разделителя, формула имеет вид:
=TEXTSPLIT(A2, , {",",",",",";",";"})
Или можно включить в массив только запятую (",") и точку с запятой (";"), а затем удалить лишние пробелы с помощью функции TRIM:
=TRIM(TEXTSPLIT(A2, , {",",";"}))
Разделение текста с игнорированием пустых значений
Если строка содержит два или более последовательных разделителя без значения между ними, вы можете выбрать, игнорировать такие пустые значения или нет. Это поведение контролируется четвертым параметром ignore_empty параметр, который по умолчанию имеет значение FALSE.
По умолчанию функция TEXTSPLIT не игнорирует пустые значения. Поведение по умолчанию хорошо работает для структурированных данных, как в приведенном ниже примере.
В этом примере таблицы оценки отсутствуют в некоторых строках. Формула TEXTSPLIT с формулой ignore_empty аргумент опущен или установлен в FALSE, отлично справляется с этим случаем, создавая пустую ячейку для каждого пустого значения.
=TEXTSPLIT(A2, ", ")
Или
=TEXTSPLIT(A2, ", ", FALSE)
В результате все значения появляются в соответствующих столбцах.
Если ваши строки содержат однородные данные, возможно, имеет смысл игнорировать пустые значения. Для этого установите параметр ignore_empty аргумент в TRUE или 1.
Например, чтобы разделить t нижеприведенных строк, поместив каждый навык в отдельную ячейку без пробелов, используется следующая формула:
=TEXTSPLIT(A2, ", ", ,TRUE)
В этом случае пропущенные значения между последовательными разделителями полностью игнорируются:
Разделение ячеек по регистру или без учета регистра
Чтобы контролировать чувствительность разделителя к регистру, используйте пятый аргумент, режим соответствия .
По умолчанию, режим соответствия устанавливается в 0, что делает TEXTSPLIT с учетом регистра .
В этом примере числа разделены строчной "x" и прописной "X" буквами.
Формула с чувствительностью к регистру по умолчанию принимает в качестве разделителя только строчную букву "x":
=TEXTSPLIT(A2, " x ")
Обратите внимание, что разделитель имеет пробел с обеих сторон от буквы " x ", чтобы предотвратить появление пробелов в результатах.
Чтобы отключить чувствительность к регистру, введите 1 для режим соответствия чтобы заставить формулу TEXTSPLIT игнорировать регистр букв:
=TEXTSPLIT(A2, " x ", , ,1)
Теперь все строки правильно разделяются любым из разделителей:
Вставка отсутствующих значений в двумерный массив
Последний аргумент функции TEXTSPLIT, pad_with Когда такая строка разбита на столбцы и строки, по умолчанию Excel возвращает ошибки #N/A вместо отсутствующих значений, чтобы не искажать структуру двумерного массива.
В приведенной ниже строке отсутствует "=" ( разделитель колонок ) после "Score". Чтобы сохранить целостность результирующего массива, TEXTSPLIT выводит #N/A рядом с "Score".
Чтобы сделать результат более удобным для пользователя, вы можете заменить ошибку #N/A на любое нужное вам значение. Просто введите нужное значение в поле pad_with аргумент.
В нашем случае это может быть дефис ("-"):
=TEXTSPLIT(A2, "=", ", ", , , "-")
Или пустую строку (""):
=TEXTSPLIT(A2, "=", ", ", , ,"")
Теперь, когда вы узнали о практическом использовании каждого аргумента функции TEXTSPLIT, давайте обсудим пару продвинутых примеров, которые помогут вам справиться с нетривиальными задачами в ваших таблицах Excel.
Разделение дат на день, месяц и год
Чтобы разделить дату на отдельные единицы, сначала нужно преобразовать дату в текст, поскольку функция TEXTSPLIT работает с текстовыми строками, а даты в Excel - это числа.
Самый простой способ преобразования числового значения в текст - это использование функции TEXT. Только не забудьте указать соответствующий код формата для вашей даты.
В нашем случае формула такова:
=TEXT(A2, "m/d/yyyy")
Следующим шагом будет вложение вышеуказанной функции в 1-й аргумент TEXTSPLIT и ввод соответствующего разделителя для 2-го или 3-го аргумента, в зависимости от того, разделяете ли вы столбцы или строки. В этом примере единицы даты разделены косой чертой, поэтому мы используем "/" для разделитель колонок аргумент:
=TEXTSPLIT(TEXT(A2, "m/d/yyyy"), "/")
Разделяйте ячейки и удаляйте определенные символы
Представьте себе следующее: вы разделили длинную строку на части, но полученный массив все еще содержит некоторые нежелательные символы, такие как круглые скобки на скриншоте ниже:
=TEXTSPLIT(A2, " ", "; ")
Чтобы убрать открывающую и закрывающую скобки за один раз, вложите две функции SUBSTITUTE одну в другую (каждая заменяет одну скобку пустой строкой) и используйте формулу TEXTSPLIT для текст аргумент внутреннего SUBSTITUTE:
=SUBSTITUTE(SUBSTITUTE(TEXTSPLIT(A2, " ", "; "), "(", ""), ")", "")
Совет. Если итоговый массив содержит слишком много лишних символов, вы можете очистить их одним из методов, описанных в этой статье: Как удалить ненужные символы в Excel.
Разделять строки, пропуская определенные значения
Предположим, вы хотите разделить приведенные ниже строки на 4 столбца: Имя , Фамилия , Оценка и Результат Проблема в том, что некоторые строки содержат титул "Mr." или "Ms.", из-за чего результаты получаются неправильными:
Решение не очевидное, но довольно простое :)
В дополнение к существующим разделителям, которыми являются пробел (" ") и запятая и пробел (", "), вы включаете строки "Mr. " и "Ms. " в разделитель колонок константа массива, так что функция использует сами заголовки для разделения текста. Чтобы игнорировать пустые значения, вы устанавливаете параметр ignore_empty аргумент на TRUE.
=TEXTSPLIT(A2, {" ", ", ", "Mr.", "Ms."}, ,TRUE)
Теперь результаты абсолютно идеальны!
Альтернативы TEXTSPLIT
В версиях Excel, где функция TEXTSPLIT не поддерживается, можно разделить строки, используя различные комбинации функции ПОИСК/ПОДБОР с LEFT, RIGHT и MID. В частности:
- Поиск без учета регистра или FIND с учетом регистра определяет позицию разделителя в строке, и
- Функции LEFT, RIGHT и MID извлекают подстроку до, после или между двумя экземплярами разделителя.
В нашем случае, чтобы разделить значения, разделенные запятая и пробел формулы выглядят следующим образом.
Чтобы извлечь имя:
=LEFT(A2, SEARCH(",", A2, 1) -1)
Чтобы подтянуть счет:
=MID(A2, SEARCH(",", A2) + 2, SEARCH(",", A2, SEARCH(",",A2)+1) - SEARCH(",", A2) - 2)
Чтобы получить результат:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2, SEARCH(",", A2) + 1)-1)
Подробное объяснение логики работы формул смотрите в разделе Как разделить строки по символам или маске.
Следует помнить, что в отличие от функции динамического массива TEXTSPLIT, эти формулы используют традиционный подход "одна формула - одна ячейка". Вы вводите формулу в первую ячейку, а затем перетаскиваете ее вниз по столбцу для копирования в нижележащие ячейки.
На скриншоте ниже показаны результаты:
Вот как разделить ячейки в Excel 365 с помощью TEXTSPLIT или альтернативных решений в более ранних версиях. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Рабочая тетрадь для тренировок для скачивания
Функция TEXTSPLIT для разделения строк - примеры формул (файл.xlsx)