Зміст
В уроці показано, як використовувати нову функцію ТЕКСТОВИЙ РОЗДІЛ для розділення рядків в Excel 365 за допомогою будь-якого вказаного вами роздільника.
Можуть виникнути різні ситуації, коли потрібно розділити комірки в Excel. У попередніх версіях ми вже були оснащені рядом інструментів для виконання цього завдання, таких як "Текст в столбцы" і "Заливка вспышкой". Тепер же для цього є спеціальна функція "ТЕКСТОПОДІЛ", яка може розділити рядок на кілька комірок по стовпцях і/або рядках на основі заданих вами параметрів.
Функція Excel TEXTSPLIT
Функція TEXTSPLIT в Excel розбиває текстові рядки по заданому роздільнику по стовпцях і/або рядках. В результаті виходить динамічний масив, який автоматично розливається на кілька комірок.
Функція приймає цілих 6 аргументів, з яких тільки перші два є обов'язковими.
TEXTSPLIT(text, col_delimiter, [row_delimiter], [ignore_empty], [match_mode], [pad_with])текст (обов'язково) - текст для розбиття. Може бути поданий у вигляді рядка або посилання на комірку.
col_delimiter (обов'язково) - символ(и), який(і) вказує(ють) на місце розбиття тексту на колонки, якщо не зазначено, роздільник_рядка має бути визначена.
роздільник_рядка (необов'язково) - символ(и), який(і) вказує(ють), де розбивати текст на рядки.
ignore_empty (необов'язково) - вказує, ігнорувати порожні значення чи ні:
- FALSE (за замовчуванням) - створювати порожні комірки для послідовних роздільників без значення між ними.
- TRUE - ігнорувати порожні значення, тобто не створювати порожні комірки для двох або більше послідовних роздільників.
match_mode (необов'язково) - визначає чутливість до регістру для роздільника. За замовчуванням увімкнено.
- 0 (за замовчуванням) - з урахуванням регістру
- 1 - без урахування регістру
pad_with (необов'язково) - значення для використання замість відсутніх значень у двовимірних масивах. За замовчуванням - помилка #N/A.
Наприклад, щоб розділити текстовий рядок в А2 на декілька клітинок, використовуючи в якості роздільника кому і пробіл, використовується формула:
=TEXTSPLIT(A2, ", ")
Доступність TEXTSPLIT
Функція TEXTSPLIT доступна тільки в Excel для Microsoft 365 (Windows і Mac) і Excel для Інтернету.
Чайові:
- У версіях Excel, де функція ТЕКСТОВИЙ РОЗДІЛ недоступна (крім Excel 365), для розділення клітинок можна скористатися майстром "Текст у стовпці".
- Для виконання зворотної задачі, тобто об'єднання вмісту декількох комірок в одну за допомогою певного роздільника, використовується функція TEXTJOIN.
Базова формула TEXTSPLIT для розділення комірки в Excel
Для початку розглянемо, як за допомогою формули TEXTSPLIT в її найпростішому вигляді розділити текстовий рядок за допомогою певного роздільника.
Розділити комірку по горизонталі по стовпчиках
Щоб розбити вміст даної комірки на декілька стовпчиків, необхідно вказати посилання на комірку, що містить вихідний рядок для першого ( текст ) аргументу і роздільник, що позначає точку, в якій має відбутися розбиття для другого ( col_delimiter ) аргумент.
Наприклад, щоб відокремити рядок в А2 по горизонталі комою, використовується формула:
=TEXTSPLIT(A2, ",")
В якості роздільника використовується кома, взята в подвійні лапки (",").
В результаті, кожна позиція, відокремлена комою, виноситься в окрему колонку:
Розділити комірку по вертикалі через рядки
Щоб розбити текст на декілька рядків, використовується третій аргумент ( роздільник_рядка ) - це місце, де ви розміщуєте роздільник. Другий аргумент ( col_delimiter ) у цьому випадку опускається.
Наприклад, для того, щоб розділити значення в комірці А2 на різні рядки, використовується формула:
=TEXTSPLIT(A2, ,",")
Зверніть увагу, що в обох випадках формула вводиться тільки в одну комірку (С2). У сусідні комірки значення, що повертаються, розливаються автоматично. Отриманий масив (який називається діапазоном розливу) виділяється синьою рамкою, вказуючи на те, що все всередині нього обчислюється за формулою в лівій верхній комірці.
Розбиття тексту на підрядки
У багатьох випадках значення у вихідному рядку розділені послідовністю символів, типовим прикладом яких є кома та пробіл. Для обробки такого сценарію слід використовувати підрядок як роздільник.
Наприклад, щоб розділити текст в форматі А2 на кілька колонок комою і пробілом, використовуйте рядок ", " for col_delimiter .
=TEXTSPLIT(A2, ", ")
Ця формула потрапляє до комірки B2, а потім ви копіюєте її вниз через стільки комірок, скільки потрібно.
Розділити рядок на стовпці та рядки одночасно
Щоб розділити текстовий рядок на рядки і стовпці одночасно, визначте обидва роздільники у формулі ТЕКСТРОЗДІЛ.
Наприклад, для розбиття текстового рядка формату А2 по стовпчиках і рядках ми поставляємо:
- Знак рівності ("=") для col_delimiter
- Кома та пробіл (", ") для роздільник_рядка
Повна формула має такий вигляд:
=TEXTSPLIT(A2, "=", ", ")
В результаті виходить двовимірний масив, що складається з 2 стовпців і 3 рядків:
Відокремлення комірок декількома роздільниками
Для обробки декількох або непослідовних роздільників у вихідному рядку використовуйте константу масиву типу {"x", "y", "z"} для аргументу роздільника.
На скріншоті нижче текст у форматі А2 розділяється як комами (","), так і крапкою з комою (";") з пробілами і без них. Щоб розбити рядок по вертикалі на рядки всіма 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)
При цьому пропущені значення між послідовними роздільниками повністю ігноруються:
Розділення комірок з урахуванням регістру або без урахування регістру
Для контролю регістрової чутливості роздільника використовується п'ятий аргумент, match_mode .
За замовчуванням, match_mode встановлюється в 0, в результаті чого TEXTSPLIT з урахуванням особливостей конкретного випадку .
У цьому прикладі цифри розділені малими та великими літерами "х" та "Х".
Формула з чутливістю до регістру за замовчуванням приймає в якості роздільника тільки малу літеру "x":
=TEXTSPLIT(A2, " x ")
Просимо звернути увагу, що роздільник має пробіл з обох боків від літери "х" для того, щоб не допустити появи в результатах передніх та задніх пробілів.
Щоб вимкнути чутливість до регістру, ви подаєте 1 для match_mode змусити формулу TEXTSPLIT ігнорувати регістр літер:
=TEXTSPLIT(A2, " x ", , ,1)
Тепер всі рядки коректно розділяються обома роздільниками:
Заповнити відсутні значення в 2D масиві
Останній аргумент функції TEXTSPLIT, pad_with стає в нагоді у випадку, якщо у вихідному рядку відсутнє одне або декілька значень. Коли такий рядок розбивається на стовпці та рядки, за замовчуванням замість відсутніх значень Excel повертає помилки #N/A, щоб не заплутувати структуру двовимірного масиву.
У наведеному нижче рядку відсутній символ "=" ( col_delimiter Для збереження цілісності результуючого масиву TEXTSPLIT виводить #N/A поруч з "Score".
Щоб зробити результат більш зручним для користувача, ви можете замінити помилку #N/A на будь-яке інше значення. Просто введіть потрібне значення в поле pad_with аргумент.
У нашому випадку це може бути дефіс ("-"):
=TEXTSPLIT(A2, "=", ", ", , ,"-")
Або пустий рядок (""):
=TEXTSPLIT(A2, "=", ", ", , , "")
Тепер, коли ви ознайомилися з практичним застосуванням кожного аргументу функції ТЕКСТСПЛИТ, давайте обговоримо декілька складних прикладів, які допоможуть вам впоратися з нетривіальними завданнями в ваших таблицях Excel.
Розбиття дат на день, місяць і рік
Щоб розділити дату на окремі одиниці, спочатку потрібно перетворити дату в текст, оскільки функція TEXTSPLIT має справу з текстовими рядками, а дати в Excel - це числа.
Найпростіший спосіб перетворення числового значення в текст - це використання функції ТЕКСТ. Тільки не забудьте вказати відповідний код формату для вашої дати.
У нашому випадку формула така:
=TEXT(A2, "m/d/yyyy")
Наступним кроком потрібно вкласти вищевказану функцію в 1-й аргумент TEXTSPLIT і ввести відповідний роздільник для 2-го або 3-го аргументу, в залежності від того, розбиваєте ви стовпці або рядки. У цьому прикладі одиниці виміру дати розділяються косою рискою, тому ми використовуємо "/" для параметра col_delimiter аргумент:
=TEXTSPLIT(TEXT(A2, "m/d/yyyy"), "/")
Розбиття комірок і видалення певних символів
Уявіть собі: ви розбили довгий рядок на частини, але отриманий масив все одно містить деякі небажані символи, наприклад, круглі дужки, як на скріншоті нижче:
=TEXTSPLIT(A2, " ", "; ")
Щоб видалити відкриваючі і закриваючі дужки одночасно, вкладіть дві функції SUBSTITUTE одна в іншу (кожна з них замінює одну дужку порожнім рядком) і використовуйте формулу TEXTSPLIT для функції текст аргумент внутрішнього ЗАМІННИКА:
=SUBSTITUTE(SUBSTITUTE(TEXTSPLIT(A2, " ", "; "), "(", ""), ")", "")
Порада. Якщо підсумковий масив містить занадто багато зайвих символів, їх можна очистити одним із способів, описаних у цій статті: Як видалити непотрібні символи в Excel.
Розділення рядків з пропуском певних значень
Припустимо, що ви хочете розділити наведені нижче рядки на 4 стовпчики: Ім'я та прізвище , Прізвище та ім'я , Оцінка і Результат Проблема в тому, що деякі рядки містять титул "пан" або "пані", через що всі результати невірні:
Рішення не очевидне, але досить просте :)
На додаток до існуючих роздільників, якими є пробіл (" ") та кома і пробіл (", "), Ви включаєте рядки "пан" та "пані" в col_delimiter константа масиву, щоб функція використовувала самі заголовки для розділення тексту. Щоб ігнорувати порожні значення, встановлюється константа ignore_empty аргумент до ІСТИНИ.
=TEXTSPLIT(A2, {" ",", ", "Mr.", "Ms."}, ,TRUE)
Зараз результати абсолютно ідеальні!
Альтернативи TEXTSPLIT
У версіях Excel, де не підтримується функція ТЕКСТОВИЙ РОЗДІЛ, розділити рядки можна за допомогою різних комбінацій функції ПОИСК/ЗНАЙТИ з параметрами ВЛЕВО, ВПРАВО і СЕРЕДИНА. Зокрема, це можна зробити за допомогою функції ПОИСК/ЗНАЙТИ:
- Без урахування регістру SEARCH або з урахуванням регістру 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)
Детальне пояснення логіки роботи формул див. у розділі Як розбивати рядки за символом або маскою.
Зверніть увагу, що на відміну від функції динамічного масиву ТЕКСТСПЛИТ, ці формули використовують традиційний підхід "одна формула - одна комірка". Ви вводите формулу в першу комірку, а потім перетягуєте її вниз по стовпчику, щоб скопіювати в наступні комірки.
Скріншот нижче демонструє результати:
Ось так можна розділити комірки в Excel 365 за допомогою TEXTSPLIT або альтернативних рішень в більш ранніх версіях. Дякую за прочитання і сподіваюся побачити вас на нашому блозі наступного тижня!
Практичний посібник для завантаження
Функція TEXTSPLIT для розділення рядків - приклади формул (файл .xlsx)