Делим слипшийся текст на части
Итак, имеем столбец с данными, которые надо разделить на несколько отдельных столбцов. Самые распространенные жизненные примеры:
- ФИО в одном столбце (а надо — в трех отдельных, чтобы удобнее было сортировать и фильтровать)
- полное описание товара в одном столбце (а надо — отдельный столбец под фирму-изготовителя, отдельный — под модель для построения, например, сводной таблицы)
- весь адрес в одном столбце (а надо — отдельно индекс, отдельно — город, отдельно — улица и дом)
- и т.д.
Поехали..
Способ 1. Текст по столбцам
Выделите ячейки, которые будем делить и выберите в меню Данные — Текст по столбцам (Data — Text to columns). Появится окно Мастера разбора текстов:
На первом шаге Мастера выбираем формат нашего текста. Или это текст, в котором какой-либо символ отделяет друг от друга содержимое наших будущих отдельных столбцов (с разделителями) или в тексте с помощью пробелов имитируются столбцы одинаковой ширины (фиксированная ширина).
На втором шаге Мастера, если мы выбрали формат с разделителями (как в нашем примере) — необходимо указать какой именно символ является разделителем:
Если в тексте есть строки, где зачем-то подряд идут несколько разделителей (несколько пробелов, например), то флажок Считать последовательные разделители одним (Treat consecutive delimiters as one) заставит Excel воспринимать их как один.
Выпадающий список Ограничитель строк (Text Qualifier) нужен, чтобы текст заключенный в кавычки (например, название компании «Иванов, Манн и Фарбер») не делился по запятой
внутри названия.
И, наконец, на третьем шаге для каждого из получившихся столбцов, выделяя их предварительно в окне Мастера, необходимо выбрать формат:
- общий — оставит данные как есть — подходит в большинстве случаев
- дата — необходимо выбирать для столбцов с датами, причем формат даты (день-месяц-год, месяц-день-год и т.д.) уточняется в выпадающем списке
- текстовый — этот формат нужен, по большому счету, не для столбцов с ФИО, названием города или компании, а для столбцов с числовыми данными, которые Excel обязательно должен воспринять как текст. Например, для столбца с номерами банковских счетов клиентов, где в противном случае произойдет округление до 15 знаков, т.к. Excel будет обрабатывать номер счета как число:
Кнопка Подробнее (Advanced) позволяет помочь Excel правильно распознать символы-разделители в тексте, если они отличаются от стандартных, заданных в региональных настройках.
Способ 2. Как выдернуть отдельные слова из текста
Если хочется, чтобы такое деление производилось автоматически без участия пользователя, то придется использовать небольшую функцию на VBA, вставленную в книгу. Для этого открываем редактор Visual Basic:
- в Excel 2003 и старше — меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor)
- в Excel 2007 и новее — вкладка Разработчик — Редактор Visual Basic (Developer — Visual Basic Editor) или сочетание клавиш Alt+F11
Вставляем новый модуль (меню Insert — Module) и копируем туда текст вот этой пользовательской функции:
Function Substring(Txt, Delimiter, n) As String Dim x As Variant x = Split(Txt, Delimiter) If n > 0 And n - 1 <= UBound(x) Then Substring = x(n - 1) Else Substring = "" End If End Function
Теперь можно найти ее в списке функций в категории Определенные пользователем (User Defined) и использовать со следующим синтаксисом:
=SUBSTRING(Txt; Delimeter; n)
где
- Txt — адрес ячейки с текстом, который делим
- Delimeter — символ-разделитель (пробел, запятая и т.д.)
- n — порядковый номер извлекаемого фрагмента
Например:
Способ 3. Разделение слипшегося текста без пробелов
Тяжелый случай, но тоже бывает. Имеем текст совсем без пробелов, слипшийся в одну длинную фразу (например ФИО «ИвановИванИванович»), который надо разделить пробелами на отдельные слова. Здесь может помочь небольшая макрофункция, которая будет автоматически добавлять пробел перед заглавными буквами. Откройте редактор Visual Basic как в предыдущем способе, вставьте туда новый модуль и скопируйте в него код этой функции:
Function CutWords(Txt As Range) As String Dim Out$ If Len(Txt) = 0 Then Exit Function Out = Mid(Txt, 1, 1) For i = 2 To Len(Txt) If Mid(Txt, i, 1) Like "[a-zа-я]" And Mid(Txt, i + 1, 1) Like "[A-ZА-Я]" Then Out = Out & Mid(Txt, i, 1) & " " Else Out = Out & Mid(Txt, i, 1) End If Next i CutWords = Out End Function
Теперь можно использовать эту функцию на листе и привести слипшийся текст в нормальный вид:
Ссылки по теме
- Деление текста при помощи готовой функции надстройки PLEX
- Что такое макросы, куда вставлять код макроса, как их использовать
Skip to content
ПСТР — одна из текстовых функций, которые Microsoft Excel предоставляет для управления текстовыми строками. На самом базовом уровне она используется для извлечения подстроки из середины текста.
В этом руководстве мы обсудим синтаксис и особенности функции Excel ПСТР (в английской версии – MID), а затем вы узнаете несколько вариантов творческого её использования для выполнения сложных задач.
- Синтаксис и особенности
- Если 2 слова — извлекаем имя и фамилию
- Как получить текст между двумя определенными символами
- Как извлечь любое по счету слово
- Получаем слово с нужными буквами или символами
- Как заставить ПСТР возвращать число?
- Использование регулярных выражений для извлечения части текста
- Как извлечь текст из ячейки с помощью Ultimate Suite
Cинтаксис.
Функция ПСТР возвращает указанное количество знаков, начиная с указанной вами позиции.
Функция Excel ПСТР имеет следующие аргументы:
ПСТР(текст; начальная_позиция; количество_знаков)
Где текст — это исходная текстовая строка. Далее следует позиция первого символа, который вы хотите извлечь, и количество их для извлечения.
Все 3 аргумента обязательны.
Например, чтобы извлечь 6 знаков из A2, начиная с 17-го, используйте эту формулу:
=ПСТР(A2;17;6)
Результат может выглядеть примерно так:
5 вещей, которые вы должны знать о функции Excel ПСТР
Как вы только что убедились, в использовании функции ПСТР в Excel нет ничего страшного. И помня следующие простые факты, вы избежите наиболее распространенных ошибок.
- Функция ПСТР всегда возвращает текстовую строку, даже если извлеченная подстрока содержит только цифры. Это может иметь большое значение, если вы хотите использовать результат формулы ПСТР в других вычислениях. Чтобы преобразовать цифры в число, применяйте ПСТР в сочетании с функцией ЗНАЧЕН (VALUE в английской версии), как показано в этом примере. (ссылка на последний раздел).
- Когда начальная позиция больше, чем общая длина исходного текста, формула Excel ПСТР возвращает пустое значение («»).
- Если начальная позиция меньше 1, формула ПСТР возвращает ошибку #ЗНАЧ!.
- Когда третий аргумент меньше 0 (отрицательное число), формула ПСТР возвращает ошибку #ЗНАЧ!. Если количество знаков для извлечения равно 0, выводится пустая строка (пустая ячейка).
- В случае, если сумма начальной позиции и количества знаков превышает общую длину исходного текста, функция ПСТР в Excel возвращает подстроку начиная с начальной позиции и до последнего символа.
При решении реальных задач в Excel вам чаще всего потребуется использовать ПСТР в сочетании с другими функциями, как показано в следующих примерах.
Как извлечь имя и фамилию.
Если у вас была возможность прочитать наши недавние уроки, вы уже знаете, как вытащить имя с помощью функции ЛЕВСИМВ и получить фамилию с помощью ПРАВСИМВ. Но, как это часто бывает в Excel, одно и то же можно сделать разными способами.
Получаем имя.
Предполагая, что полное имя находится в ячейке A2, имя и фамилия разделены интервалом, вы можете извлечь имя, используя следующую формулу:
=ПСТР(A2;1;ПОИСК(» «;A2)-1)
ПОИСК используется для сканирования исходного значения на предмет пробела (» «) и возврата его позиции, из которой вы вычитаете 1, чтобы избежать пробелов после имени. Затем вы используете ПСТР, чтобы вернуть подстроку, начинающуюся с первого знака и заканчивая предшествующим пробелу, таким образом извлекая первое имя.
Получаем фамилию.
Чтобы извлечь фамилию из A2, используйте эту формулу:
=СЖПРОБЕЛЫ(ПСТР(A2;ПОИСК(» «;A2);ДЛСТР(A2)))
Опять же, вы используете ПОИСК, чтобы определить начальную позицию (пробел). Нам не нужно точно рассчитывать конечную позицию (как вы помните, если вместе взятые начальная позиция и количество символов больше, чем общая длина текста, возвращаются просто все оставшиеся). Итак, в аргументе количество символов вы просто указываете общую первоначальную длину , возвращаемую функцией ДЛСТР . Впрочем, вместо этого вы можете просто ввести число, представляющее самую длинную фамилию, которую вы ожидаете найти, например 100. Наконец, СЖПРОБЕЛЫ удаляет лишние интервалы, и вы получаете следующий результат:
Как выделить подстроку между двумя разделителями.
Продолжим предыдущий пример. А если, помимо имени и фамилии, ячейка A2 также содержит отчество, то как его извлечь?
Технически задача сводится к определению позиций двух пробелов в исходном тексте, и вы можете сделать это следующим образом:
- Как и в предыдущем примере, используйте ПОИСК, чтобы определить позицию первого (» «), к которому вы добавляете 1, потому что вы хотите начать с символа, следующего за ним. Таким образом, вы получаете адрес начальной позиции: ПОИСК (» «; A2) +1
- Затем вычислите позицию 2- го интервала, используя вложенные функции поиска, которые предписывают Excel начать поиск именно со 2-го: ПОИСК (» «; A2, ПОИСК (» «; A2) +1)
Чтобы узнать количество извлекаемых знаков, вычтите позицию первого пробела из положения второго. И затем еще вычтите 1 из результата, поскольку вам не нужны лишние интервалы в получившемся результате. Таким образом, у вас есть второй аргумент для формулы:
ПОИСК(» «; A2; ПОИСК(» «; A2) +1) — ПОИСК(» «; A2)
Соединив все аргументы, мы получаем формулу для извлечения подстроки между двумя пробелами:
=ПСТР(A2;ПОИСК(» «;A2)+1;ПОИСК(» «;A2;ПОИСК(» «;A2)+1)-ПОИСК(» «;A2)-1)
На следующем скриншоте показан результат:
Аналогичным образом вы можете извлечь текст между любыми другими разделителями:
ПСТР( строка ; ПОИСК( разделитель ; строка ) +1; ПОИСК( разделитель ; строка ; ПОИСК( разделитель ; строка ) +1) — ПОИСК( разделитель ; строка ) -1)
Например, чтобы извлечь отрезок, выделенный запятой с пробелом после неё, используйте следующее выражение:
=ПСТР(A2;ПОИСК(«, «;A2)+1;ПОИСК(«, «;A2;ПОИСК(«, «;A2)+1)-ПОИСК(«, «;A2)-1)
На следующем рисунке эта формула используется для извлечения из адреса названия города, и она отлично справляется со своей задачей:
Как получить N-е слово из текста.
Этот пример демонстрирует оригинальное использование сложной формулы ПСТР в Excel, которое включает 5 различных составных частей:
- ДЛСТР — чтобы получить общую длину.
- ПОВТОР — повторение определенного знака заданное количество раз.
- ПОДСТАВИТЬ — заменить один символ другим.
- ПСТР — извлечь подстроку.
- СЖПРОБЕЛЫ — удалить лишние интервалы между словами.
Общая формула выглядит следующим образом:
СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ( строка ; » «; ПОВТОР (» «; ДЛСТР( строка ))); ( N -1) * ДЛСТР( строка ) +1; ДЛСТР( строка )))
Где:
- Строка — это исходный текст, из которого вы хотите извлечь желаемое слово.
- N – порядковый номер слова, которое нужно получить.
Например, чтобы вытащить второе слово из A2, используйте это выражение:
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ($A$2;» «;ПОВТОР(» «;ДЛСТР($A$2))); (2-1)*ДЛСТР($A$2)+1; ДЛСТР($A$2)))
Или вы можете ввести порядковый номер слова, которое нужно извлечь (N) в какую-либо ячейку, и указать эту ячейку в формуле, как показано на скриншоте ниже:
Как работает эта формула?
По сути, Excel «оборачивает» каждое слово исходного текста множеством пробелов, находит нужный блок «пробелы-слово-пробелы», извлекает его, а затем удаляет лишние интервалы. Чтобы быть более конкретным, это работает по следующей логике:
- ПОДСТАВИТЬ и ПОВТОР заменяют каждый пробел в тексте несколькими. Количество этих дополнительных вставок равно общей длине исходной строки: ПОДСТАВИТЬ($A$2;» «;ПОВТОР(» «;ДЛСТР($A$2)))
Вы можете представить себе промежуточный результат как «астероиды» слов, дрейфующих в пространстве, например: слово1-пробелы-слово2-пробелы-слово3-… Эта длинная строка передается в текстовый аргумент ПСТР.
- Затем вы определяете начальную позицию для извлечения (первый аргумент), используя следующее уравнение: (N-1) * ДЛСТР(A1) +1. Это вычисление возвращает либо позицию первого знака первого слова, либо, чаще, позицию в N-й группе пробелов.
- Количество букв и цифр для извлечения (второй аргумент) — самая простая часть — вы просто берете общую первоначальную длину: ДЛСТР(A2).
- Наконец, СЖПРОБЕЛЫ избавляется от начальных и конечных интервалов в извлечённом тексте.
Приведенная выше формула отлично работает в большинстве ситуаций. Однако, если между словами окажется 2 или более пробелов подряд, это даст неверные результаты (1). Чтобы исправить это, вложите еще одну функцию СЖПРОБЕЛЫ в ПОДСТАВИТЬ, чтобы удалить лишние пропуски между словами, оставив только один, например:
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ($A$2);» «; ПОВТОР(» «;ДЛСТР($A$2))); (B2-1)*ДЛСТР($A$2)+1; ДЛСТР($A$2)))
Следующий рисунок демонстрирует улучшенный вариант (2) в действии:
Если ваш исходный текст содержит несколько пробелов между словами, а также очень большие или очень короткие слова, дополнительно вставьте СЖПРОБЕЛЫ в каждое ДЛСТР, чтобы вы были застрахованы от ошибки:
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ($A$2);» «; ПОВТОР(» «;ДЛСТР(СЖПРОБЕЛЫ ($A$2)))); (B2-1)*ДЛСТР(СЖПРОБЕЛЫ($A$2))+1; ДЛСТР(СЖПРОБЕЛЫ($A$2))))
Я согласен с тем, что это выглядит немного громоздко, но зато безупречно обрабатывает все возможные варианты.
Извлекаем слово, содержащее определенный символ.
В этом примере показана еще одна нестандартная формула Excel ПСТР, которая извлекает слово, содержащее определенную букву или цифру, из любого места:
СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ ( строка , » «, ПОВТОР(» «, 99)), МАКС(1, НАЙТИ( символ , ПОДСТАВИТЬ( строка , » «, ПОВТОР(» «, 99))) — 50), 99))
Предполагая, что исходный текст находится в ячейке A2, и вы хотите получить слово, содержащее символ «$» (цена), выражение принимает следующую форму:
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A2;» «;ПОВТОР(» «;99)); МАКС(1;НАЙТИ(«$»;ПОДСТАВИТЬ(A2;» «;ПОВТОР(» «;99)))-50);99))
Аналогичным образом вы можете извлекать адреса электронной почты (на основе знака «@»), имена веб-сайтов (на основе «www») и так далее.
Теперь разберём пошагово:
Как и в предыдущем примере, ПОДСТАВИТЬ и ПОВТОР превращают каждый пробел в исходном тексте в несколько, точнее, в 99.
НАЙТИ находит позицию нужного символа (в данном примере $), из которой вы вычитаете 50. Это возвращает вас на 50 позиций назад и помещает где-то в середине блока из 99 пробелов, который предшествует слову, содержащему указанный символ.
МАКС используется для обработки ситуации, когда нужное значение появляется в начале исходного текста. В этом случае результат ПОИСК() — 50 будет отрицательным числом, а МАКС(1, ПОИСК() — 50) заменяет его на 1.
С этой начальной точки ПСТР отбирает следующие 99 знаков и возвращает интересующее нас слово, окруженное множеством пробелов. Как обычно, СЖПРОБЕЛЫ помогает избавиться от лишних из них, оставив только один.
Совет. Если извлекаемый отрезок очень большой, замените 99 и 50 на более крупные числа, например 1000 и 500.
Как заставить ПСТР возвращать число?
Как и другие текстовые функции, Excel ПСТР всегда возвращает текст, даже если он содержит только цифры и очень похож на число. Вы можете убедиться с этом, взглянув на пример чуть выше, когда мы получили число «20%» как текст.
Чтобы преобразовать результат в число, просто передайте полученный результат в функцию ЗНАЧЕН (VALUE в английской версии), которая преобразует текстовое значение, состоящее из цифр, в число.
Например, чтобы извлечь подстроку из 3 символов, начинающуюся с 7- го символа, и преобразовать ее в число, используйте:
=ЗНАЧЕН(ПСТР(A2;7;3))
На скриншоте ниже показан результат. Обратите внимание, что числа с выравниванием по правому краю помещены в столбец B, в отличие от исходных текстовых значений с выравниванием по левому краю в столбце A:
Тот же подход работает и для более сложных случаев. В приведенном выше примере, предполагая, что коды ошибок имеют переменную длину, вы можете извлечь их с помощью ПСТР, которая получает подстроку между двумя разделителями, вложенную в ЗНАЧЕН:
=ЗНАЧЕН(ПСТР(A2;ПОИСК(«:»;A2)+1;ПОИСК(«:»;A2;ПОИСК(«:»;A2)+1)-ПОИСК(«:»;A2)-1))
Вот как можно использовать функцию ПСТР в Excel.
Использование регулярных выражений, чтобы извлечь часть текста.
Регулярное выражение – это шаблон, состоящий из последовательности символов, который можно использовать для поиска соответствующей последовательности в другой строке.
Как добавить в Excel пользовательскую функцию работы с регулярными выражениями и как правильно составить шаблон – читайте подробную инструкцию здесь.
Вы можете извлечь из ячейки все числа или все буквы, телефонный номер, адрес электронной почты, дату, время, текст между любыми двумя символами или двумя словами, текст после определенного символа, и еще множество вариантов.
Вот пример: из наименования товара — Коммутатор Optimus U1E-8F/1G/1S, нужно извлечь номер модели. Поскольку этот номер находится в конце наименования, то будем искать то, что записано после последнего пробела.
= RegExpExtract(A1; «([^s.]+)$»)
В результате получим U1E-8F/1G/1S, что и требовалось.
Как извлечь текст из ячейки с помощью Ultimate Suite
Как вы только что видели, Microsoft Excel предоставляет набор различных функций для работы с текстовыми строками. Если вам нужно извлечь какое-то слово или часть текста из ячейки, но вы не уверены, какая функция лучше всего подходит для ваших нужд, передайте работу Ultimate Suite for Excel. Заодно не придётся возиться с формулами.
Вы просто переходите на вкладку Ablebits Data > Текст, выбираете инструмент Split Text и в выпадающем списке нажимаете Извлечь (Extract) :
Теперь вы выбираете исходные ячейки, и какие бы сложные строки они ни содержали, извлечение из них подстроки сводится к этим двум простым действиям:
- Укажите, сколько символов вы хотите получить из начала, конца или середины строки; или выберите извлечение всего текста до или после определенного символа.
- Щелкните Вставить результаты (Insert Results). Готово!
Кроме того, вы можете извлечь любое число символов с начала или в конце текста, из середины текста, между какими-то символами. Например, чтобы извлечь доменные имена из списка адресов электронной почты, вы выбираете чекбокс Все после текста (All after text) и вводите @ в поле рядом с ним. Чтобы извлечь имена пользователей, выберите переключатель Все до текста (All before text), как показано на рисунке ниже.
Помимо скорости и простоты, инструмент «Извлечь текст» имеет дополнительную ценность — он поможет вам изучить формулы Excel в целом и функции подстроки в частности. Как? Выбрав флажок Вставить как формула (Insert as formula) в нижней части панели, вы убедитесь, что результаты выводятся в виде формул, а не просто как значения. Естественно, эти формулы вы можете использовать в других таблицах.
В этом примере, если вы выберете ячейки B2 и C2, вы увидите следующие формулы соответственно:
- Чтобы извлечь имя пользователя:
=ЕСЛИОШИБКА(ЛЕВСИМВ(A2,ПОИСК(«@»,A2)-1),»»)
- Чтобы извлечь домен:
=ЕСЛИОШИБКА(ПРАВСИМВ(A2, ДЛСТР(A2)- ПОИСК(«@»,A2) — ДЛСТР(«@») + 1),»»)
Сколько времени вам потребуется, чтобы самостоятельно составить эти выражения?
Поскольку результаты представляют собой формулы, извлеченные подстроки будут обновляться автоматически, как только в исходные ячейки будут внесены какие-либо изменения. Когда в ваш набор данных добавляются новые записи, вы можете скопировать формулы в другие ячейки как обычно, без необходимости заново запускать инструмент «Извлечь текст».
Если вам интересно попробовать это, а также множество других полезных функций, включенных в Ultimate Suite for Excel, вы можете загрузить ознакомительную версию. Если вам нравятся инструменты, вы можете получить лицензию по очень специальной цене, которая доступна только для наших русскоязычных пользователей.
Благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Извлечь текст между первой и второй запятыми из текстовых строк
Чтобы извлечь текст между первой и второй запятыми или второй и третьей запятыми из текстовых строк, в этом руководстве будут представлены некоторые формулы для решения этой задачи в Excel.
- Извлечь текст между первой и второй запятыми или другими разделителями из текстовой строки
- Извлечь текст между второй и третьей запятыми или другими разделителями из текстовой строки
Извлечь текст между первой и второй запятыми или другими разделителями из текстовой строки
Если вы хотите извлечь текст между первой и второй запятыми или другими разделителями, функции MID и SEARCH могут помочь вам в выполнении этой задачи, общий синтаксис:
=MID(cell, SEARCH(«char«,cell) + 1, SEARCH(«char«,cell, SEARCH(«char«,cell)+1) — SEARCH(«char«,cell) — 1)
- cell: Ссылка на ячейку или текстовую строку, из которой вы хотите извлечь текст.
- char: Конкретный разделитель, на основе которого вы хотите извлечь текст.
Скопируйте или введите следующую формулу в пустую ячейку, в которой вы хотите получить результат:
=MID(A2, SEARCH(«,»,A2) + 1, SEARCH(«,»,A2,SEARCH(«,»,A2)+1) — SEARCH(«,»,A2) — 1)
Затем перетащите дескриптор заполнения вниз к ячейкам, к которым вы хотите применить эту формулу, и ко всем текстам, которые были извлечены между первой и второй запятыми, см. Снимок экрана:
Пояснение к формуле:
1. ПОИСК («,», A2) + 1: Эта функция ПОИСК используется для нахождения позиции первой запятой в ячейке A2, добавление 1 означает начало извлечения со следующего символа. Он получит номер 14. Эта часть распознается как аргумент start_num в функции MID.
2. ПОИСК («,», A2, ПОИСК («,», A2) +1) — ПОИСК («,», A2) — 1: Эта часть распознается как аргументы num_chars в функции MID.
- ПОИСК («,», A2, ПОИСК («,», A2) +1): Эта часть формулы используется для получения позиции второй запятой, ей будет присвоено число 21.
- ПОИСК («,»; A2): Эта функция ПОИСК получит позицию первой запятой в ячейке A2. Он получит номер 13.
- ПОИСК («,», A2, ПОИСК («,», A2) +1) — ПОИСК («,», A2) -1 = 21-13-1: Вычесть позицию первой запятой из позиции второй запятой, а затем вычесть 1 из результата означает исключить символ запятой. И результат 7.
3. MID (A2, SEARCH («,», A2) + 1, SEARCH («,», A2, SEARCH («,», A2) +1) — SEARCH («,», A2) — 1) = MID (A2, 14, 7): Наконец, функция MID извлечет 7 символов в середине ячейки A2, которая начинается с четырнадцатого символа.
Ноты:
1. Если ваши текстовые строки разделены другими разделителями, вам просто нужно заменить запятые в формуле другими разделителями по мере необходимости.
2. Вот еще одна простая формула, которая также может оказать вам услугу:
=TRIM(MID(SUBSTITUTE(A2,»,»,REPT(» «,100)),100,100))
Извлечь текст между второй и третьей запятыми или другими разделителями из текстовой строки
Иногда вам может потребоваться извлечь текст между второй и третьей запятыми, в этом случае вам может помочь комбинация функций MID, FIND и SUBSTITUTE. Общий синтаксис:
=MID(cell, FIND(«#»,SUBSTITUTE(cell,»char«,»#»,2))+1, FIND(«#»,SUBSTITUTE(cell,»char«,»#»,3)) — FIND(«#»,SUBSTITUTE(cell,»char«,»#»,2))-1)
- cell: Ссылка на ячейку или текстовую строку, из которой вы хотите извлечь текст.
- char: Конкретный разделитель, на основе которого вы хотите извлечь текст.
Скопируйте или введите следующую формулу в пустую ячейку:
=MID(A2, FIND(«#»,SUBSTITUTE(A2,»,»,»#»,2))+1, FIND(«#»,SUBSTITUTE(A2,»,»,»#»,3)) — FIND(«#»,SUBSTITUTE(A2,»,»,»#»,2))-1)
После вставки формулы перетащите маркер заполнения вниз к ячейкам, чтобы применить эту формулу, и все тексты между второй и третьей запятыми были извлечены, как показано ниже:
Пояснение к формуле:
1. НАЙТИ («#», ПОДСТАВИТЬ (A2, «,», «#», 2)) + 1: Эта часть распознается как аргумент start_num в функции MID.
- ПОДСТАВИТЬ (A2; «,», «#»; 2): Эта функция ЗАМЕНА используется для замены второй запятой в ячейке A2 символом #, вы получите следующий результат: «Apple-3000KG, Хьюстон, штат Техас, США«.
- НАЙТИ («#»; ПОДСТАВИТЬ (A2; «,», «#»; 2)) + 1: Использование функции НАЙТИ для получения позиции символа # в текстовой строке, возвращаемой функцией ЗАМЕНА. Добавление 1 означает начало извлечения со следующего символа. Это получит номер 22.
2. НАЙТИ («#», ПОДСТАВИТЬ (A2, «,», «#», 3)) — НАЙТИ («#», ПОДСТАВИТЬ (A2, «,», «#», 2)) — 1: Эта часть распознается как аргумент num_chars в функции MID.
- НАЙТИ («#»; ПОДСТАВИТЬ (A2; «,», «#»; 3)): Эта формула вернет позицию третьей запятой, она получит число 27.
- FIND(«#»,SUBSTITUTE(A2,»,»,»#»,3)) — FIND(«#»,SUBSTITUTE(A2,»,»,»#»,2))-1= 27-21-1: Вычесть позицию второй запятой из позиции третьей запятой, а затем вычесть 1 из результата означает исключить символ запятой. И результат 5.
3. MID (A2, НАЙТИ («#», ПОДСТАВИТЬ (A2, «,», «#», 2)) + 1, НАЙТИ («#», ЗАМЕНА (A2, «,», «#», 3) ) — НАЙТИ («#», ЗАМЕНА (A2, «,», «#», 2)) — 1) = MID (A2, 22, 5): Наконец, функция MID извлечет 5 символов в середине ячейки A2, которая начинается с двадцать второго символа.
Ноты:
1. Если ваши текстовые строки разделены другими разделителями, вам просто нужно заменить запятые в формуле другими разделителями по мере необходимости.
2. Другая простая формула также может помочь вам извлечь текст между второй и третьей запятыми:
=TRIM(MID(SUBSTITUTE(A2,»,»,REPT(» «,100)),200,100))
Используемые относительные функции:
- MID:
- Функция MID используется для поиска и возврата определенного количества символов из середины данной текстовой строки.
- FIND:
- Функция НАЙТИ используется для поиска строки в другой строке и возвращает начальную позицию строки внутри другой.
- SEARCH:
- Функция ПОИСК может помочь вам найти позицию определенного символа или подстроки в заданной текстовой строке.
- SUBSTITUTE:
- Функция ЗАМЕНА в Excel заменяет текст или символы в текстовой строке другим текстом или символами.
Другие статьи:
- Извлечь несколько строк из ячейки
- Если у вас есть список текстовых строк, разделенных разрывами строк (это происходит при нажатии клавиш Alt + Enter при вводе текста), и теперь вы хотите извлечь эти строки текста в несколько ячеек, как показано ниже. Как бы вы могли решить это с помощью формулы в Excel?
- Извлечь N-е слово из текстовой строки в Excel
- Если у вас есть список текстовых строк или предложений, теперь вы хотите извлечь конкретное n-е слово из списка, как показано ниже. В этой статье я расскажу о некоторых методах решения этой задачи в Excel.
- Извлечь текст между круглыми скобками из текстовой строки
- Если в текстовой строке есть часть текста, заключенная в круглые скобки, теперь вам нужно извлечь все текстовые строки между скобками, как показано на следующем снимке экрана. Как быстро и легко решить эту задачу в Excel?
- Извлечь текст после последнего появления определенного символа
- Если у вас есть список сложных текстовых строк, содержащих несколько разделителей (в качестве примера возьмите приведенный ниже снимок экрана, который содержит дефисы, запятую, пробелы в данных ячейки), и теперь вы хотите найти позицию последнего появления дефиса , а затем извлеките подстроку после нее. В этой статье я представлю несколько формул для решения этой задачи.
Лучшие инструменты для работы в офисе
Kutools for Excel — Помогает вам выделиться из толпы
Хотите быстро и качественно выполнять свою повседневную работу? Kutools for Excel предлагает 300 мощных расширенных функций (объединение книг, суммирование по цвету, разделение содержимого ячеек, преобразование даты и т. д.) и экономит для вас 80 % времени.
- Разработан для 1500 рабочих сценариев, помогает решить 80% проблем с Excel.
- Уменьшите количество нажатий на клавиатуру и мышь каждый день, избавьтесь от усталости глаз и рук.
- Станьте экспертом по Excel за 3 минуты. Больше не нужно запоминать какие-либо болезненные формулы и коды VBA.
- 30-дневная неограниченная бесплатная пробная версия. 60-дневная гарантия возврата денег. Бесплатное обновление и поддержка 2 года.
Вкладка Office — включение чтения и редактирования с вкладками в Microsoft Office (включая Excel)
- Одна секунда для переключения между десятками открытых документов!
- Уменьшите количество щелчков мышью на сотни каждый день, попрощайтесь с рукой мыши.
- Повышает вашу продуктивность на 50% при просмотре и редактировании нескольких документов.
- Добавляет эффективные вкладки в Office (включая Excel), точно так же, как Chrome, Firefox и новый Internet Explorer.
Как разделить текст в ячейке Excel?
Добрый день уважаемый читатель!
В статье я хочу рассмотреть вопрос о том, как и какими способами, возможно, разделить текст в ячейке, который оказался склеен! Если вы часто работаете с импортированными данными в Excel, то периодически встречаете такие проблемы как выгруженные точки вместо запятых, неправильный формат данных, слепленные слова или значения и многое другое. На этот случай Excel предоставляет несколько возможностей по нормализации данных и у каждого из них есть свои плюсы и минуса.
Разобрать слитый текст на необходимые составляющие возможно произвести с помощью:
Мастер разбора текстов
Рассмотрим самый простой способ разделить текст в ячейке, не по сути, а по исполнению. Для примера, очень наглядно это можно продемонстрировать на ФИО в одной ячейке, которые необходимо разделить на отдельные столбики для удобства сортировки и фильтрации.
Для выполнения задачи вызываем диалоговое окно «Мастер текстов (разбор)» и в 3 шага разделяем текст:
- Для начала нужно выделить данные, которые необходимо разделить, следующим шагом на вкладке «Данные» в разделе «Работа с данными» нажимаете иконку «Текст по столбцам» и в вызванном диалоговом окне мастера указываем формат рабочего текста. Выбираем 2 вида форматов:
- С разделителями – это когда существует текст или символ, который условно будет отделять будущее содержимое отдельных ячеек;
- Фиксированной ширины – это когда при помощи пробелов в тексте имитируется столбики одинаковой ширины.
- Вторым шагом, в нашем примере, указываем символ, выполняющий роль разделителя. В случаях, когда в тексте идут подряд пару разделителей, несколько пробелов, к примеру, то установка флажка для пункта «Считать последовательные разделители одним» укажет для Excel принимать их за один разделитель. Дополнительное условие «Ограничитель строк» поможет указать, что текстовые значения, содержащиеся в кавычках не делить (к примеру, название фирмы «Рудольф, Петер и Саймон»);
- Последним шагом, для уже разделённых столбиков, нужно указать в диалоговом окне мастера, предварительно выделив их, выбрать необходимый формат получаемых данных:
- Общий – не проводит изменения данных, оставляя их в первоначальном виде, будет оптимальным выбором в большинстве случаев;
- Текстовый – данный формат, в основном, необходим для столбиков с числовыми значениями, которые программа в обязательном порядке должна интерпретировать как текст. (К примеру, это числа с разделителем по тысяче или номер пластиковой карточки);
- Дата – этот формат используется для столбиков с датами, кстати, формат самой даты можно выбрать в выпадающем списке.
В случае, когда будете использовать символы, которые не похожи на стандартные, назначенные в региональных настройках, можете использовать кнопку «Подробнее» для правильного их распознавания.
Рассоединяем текст с помощью формул
Для этого способа нам понадобятся возможности сочетаний функций ПОИСК и ПСТР. При помощи функции ПОИСК мы будем искать все пробелы, которые есть между словами (например, между фамилией, именем и отчеством). Потом функцией ПСТР выделяем необходимое количество символов для дальнейшего разделения.
И если с первыми двумя словами понятно, что и как разделять, то разделителя для последнего слова нет, а это значит что нужно указать в качестве аргумента условно большое количество символов, как аргумент «число_знаков» для функции ПСТР, например, 100, 200 или больше.
А теперь поэтапно рассмотрим формирование формулы для разделения текста в ячейке:
- Во-первых, нам необходимо найти два пробела, которые разделяют наши слова, для поиска первого пробела нужна формула: =ПОИСК(» «;B2;1), а для второго подойдет: =ПОИСК(» «;B2;C2+1);
- Во-вторых, определяем, сколько символов нужно выделить в строке. Поскольку позиции разделителя мы уже определили, то символов для разделения у нас будет на один меньше. Значит, будем использовать функцию ПСТР для изъятия слов, с ячейки используя как аргумент «количество_знаков» результат работы предыдущей формулы. Для определения первого слова (Фамилии) нужна формула: =ПСТР(B2;1;ПОИСК(» «;B2;1)), для определения второго значения (Имя): =ПСТР(B2;ПОИСК(» «;B2;1)+1;ПОИСК(» «;B2;ПОИСК(» «;B2;1)+1) -ПОИСК(» «;B2;1)), а теперь определим последнее значение (Отчество): =ПСТР(B2;ПОИСК(» «;B2;ПОИСК(» «;B2;1)+1)+1;100).
В результате мы разделили ФИО на три слова, что позволит с ними эффективно работать.
Если же значение в ячейке будете делить на две части, то ищете только один пробел (или иной разделитель), а вот чтобы разделить более 4 слов, в формулу добавьте поиск необходимых разделителей.
Выдергиваем слова с помощью макросов VBA
Рассмотрим два способа разделить текст в ячейке:
- Выдергиваем отдельные слова по разделителю;
- Делим текст без пробелов.
Способ №1.
Поскольку вас интересует автоматическое деление текста, значит надо написать хорошую функцию на VBA и внедрить ее в рабочую книгу. Для начала переходим на вкладку «Разработчик» и выбираем «Visual Basic» или вызываем эту возможность с помощью горячего сочетания клавиш Alt+F11. (детальнее в статье «Как создать макрос в Excel»).
Создаем новый модуль в меню «Insert» наживаем пункт «Module» и переносим в него нижеприведенный код:
Как разделить текст в MS Excel
Многие знают, что для того, чтобы объединить текст в двух ячейках достаточно воспользоваться функцией СЦЕПИТЬ (CONCATENATE), однако, как быть, если необходимо не объединить, а наоборот разделить текст в ячейке? Если количество символов, которое необходимо отделить известно (не важно справа или слева), тогда можно воспользоваться функциями ЛЕВСИМВ (LEFT) или ПРАВСИМВ (RIGHT), в зависимости с какой стороны необходимо выделить определенное количество символов.
Однако, как быть, если необходимо разделить ячейку в которой заведомо не известно количество символов, которые нужно отделить, а известно лишь сколько частей необходимо получить в результате операции. Самым простым примером такой ситуации может быть необходимость выделить из ячейки в которой занесено ФИО человека, отдельно фамилию, имя и отчество. Фамилии у всех разные, поэтому заранее узнать количество символов, которые необходимо отделить, не получится.
На Ваше обозрение представим два способа разделения текста. Один очень быстрый — для тех кому надо просто разделить текст заменив имеющийся, а второй с использованием формул.
Первый способ — супер быстрый.
На самом деле в MS Excel существует встроенная возможность быстрого разделения текста в ячейке, если там присутствует или присутствуют разделитель/разделители (например, простой пробел или запятая). Причем таких разделителей может быть несколько, т.е. текст будет разделятся если в строке присутствует или пробел, или точка с запятой или запятая и т.д.
Для этого необходимо выделить ячейки с текстом, который необходимо разделить и воспользоваться командой «Текст по столбцам».
В англоязычной версии MS Excel данная команда звучит как «Text to Columns» вкладки «DATA».
После несложных подсказок мастера (на самом деле, в нашем примере после выбора разделителя — пробела можно смело жать «Готово»)
А вот и, собственно, результат.
Второй способ — с использованием формул.
В такой ситуации понадобится сочетание функций: ПОИСК (SEARCH) и ПСТР (MID). Для начала, с помощью первой находим пробел между словами (между фамилией и именем и именем и отчеством), а потом подключаем вторую для того, чтобы выделить необходимое количество символов. Грубо говоря, первой функцией определяем количество символов, а второй — уже разделяем.
Кроме того, поскольку разделительного знака в конце строки нет, то количество символов в последнем слове (нашем случае — отчестве) вычислить не удастся, но это не проблема, достаточно указать заведомо большее количество символов в качестве аргумента «число знаков» функции ПСТР, например, 100.
Рассмотрим вышесказанное на примере. Сначала, для лучшего понимания, разнесем формулы и, таким образом, разделим весь процесс на два этапа.
Для того, чтобы определить количество символов, которые необходимо выделить в строке, необходимо определить позиции разделителей (в нашем случае пробела) их будет на один меньше нежели слов в ячейке.
Поскольку информация о количестве необходимых символах получена, следующим этапом будет использование функции ПСТР (MID).
Здесь, в качестве аргументов, используются промежуточные значения, полученные с помощью функции ПОИСК. Для последней колонки количество символов неизвестно, поэтому было взято заведомо бОльшее количество символов (в нашем случае 100).
Теперь попробуем соединить промежуточные расчеты в одну формулу.
Если текст в ячейке необходимо разделить лишь на две части, то необходимо произвести поиск лишь одного пробела (либо другого разделителя, который находится между словами), а для разделения на 4 и больше частей формулу придется усложнить поиском 3го, 4го и т.д. разделителей.
Делим слипшийся текст на части
Итак, имеем столбец с данными, которые надо разделить на несколько отдельных столбцов. Самые распространенные жизненные примеры:
- ФИО в одном столбце (а надо — в трех отдельных, чтобы удобнее было сортировать и фильтровать)
- полное описание товара в одном столбце (а надо — отдельный столбец под фирму-изготовителя, отдельный — под модель для построения, например, сводной таблицы)
- весь адрес в одном столбце (а надо — отдельно индекс, отдельно — город, отдельно — улица и дом)
- и т.д.
Способ 1. Текст по столбцам
Выделите ячейки, которые будем делить и выберите в меню Данные — Текст по столбцам (Data — Text to columns) . Появится окно Мастера разбора текстов:
На первом шаге Мастера выбираем формат нашего текста. Или это текст, в котором какой-либо символ отделяет друг от друга содержимое наших будущих отдельных столбцов (с разделителями) или в тексте с помощью пробелов имитируются столбцы одинаковой ширины (фиксированная ширина).
На втором шаге Мастера, если мы выбрали формат с разделителями (как в нашем примере) — необходимо указать какой именно символ является разделителем:
Если в тексте есть строки, где зачем-то подряд идут несколько разделителей (несколько пробелов, например), то флажок Считать последовательные разделители одним (Treat consecutive delimiters as one) заставит Excel воспринимать их как один.
Выпадающий список Ограничитель строк (Text Qualifier) нужен, чтобы текст заключенный в кавычки (например, название компании «Иванов, Манн и Фарбер») не делился по запятой
внутри названия.
И, наконец, на третьем шаге для каждого из получившихся столбцов, выделяя их предварительно в окне Мастера, необходимо выбрать формат:
- общий — оставит данные как есть — подходит в большинстве случаев
- дата — необходимо выбирать для столбцов с датами, причем формат даты (день-месяц-год, месяц-день-год и т.д.) уточняется в выпадающем списке
- текстовый — этот формат нужен, по большому счету, не для столбцов с ФИО, названием города или компании, а для столбцов с числовыми данными, которые Excel обязательно должен воспринять как текст. Например, для столбца с номерами банковских счетов клиентов, где в противном случае произойдет округление до 15 знаков, т.к. Excel будет обрабатывать номер счета как число:
Кнопка Подробнее (Advanced) позволяет помочь Excel правильно распознать символы-разделители в тексте, если они отличаются от стандартных, заданных в региональных настройках.
Способ 2. Как выдернуть отдельные слова из текста
Если хочется, чтобы такое деление производилось автоматически без участия пользователя, то придется использовать небольшую функцию на VBA, вставленную в книгу. Для этого открываем редактор Visual Basic:
- в Excel 2003 и старше — меню Сервис — Макрос — Редактор Visual Basic(Tools — Macro — Visual Basic Editor)
- в Excel 2007 и новее — вкладка Разработчик — Редактор Visual Basic (Developer — Visual Basic Editor) или сочетание клавиш Alt+F11
Вставляем новый модуль (меню Insert — Module) и копируем туда текст вот этой пользовательской функции:
Теперь можно найти ее в списке функций в категории Определенные пользователем (User Defined) и использовать со следующим синтаксисом:
=SUBSTRING(Txt; Delimeter; n)
- Txt — адрес ячейки с текстом, который делим
- Delimeter — символ-разделитель (пробел, запятая и т.д.)
- n — порядковый номер извлекаемого фрагмента
Способ 3. Разделение слипшегося текста без пробелов
Тяжелый случай, но тоже бывает. Имеем текст совсем без пробелов, слипшийся в одну длинную фразу (например ФИО «ИвановИванИванович»), который надо разделить пробелами на отдельные слова. Здесь может помочь небольшая макрофункция, которая будет автоматически добавлять пробел перед заглавными буквами. Откройте редактор Visual Basic как в предыдущем способе, вставьте туда новый модуль и скопируйте в него код этой функции:
Теперь можно использовать эту функцию на листе и привести слипшийся текст в нормальный вид:
Как разделить текст по ячейкам формула в Excel
Часто приходится оптимизировать структуру данных после импорта в Excel. Некоторые разные значения попадают в одну и туже ячейку образуя целую строку как одно значение. Возникает вопрос: как разбить строку на ячейки в Excel. Программа располагает разными поисковыми функциями: одни ищут по ячейках другие ищут по содержимому ячеек. Ведь выполнять поиск по текстовой строке, которая содержится в ячейке ¬– это также распространенная потребность пользователей Excel. Их мы и будем использовать для разделения строк.
Как разделить текст на две ячейки Excel
Допустим на лист Excel были импортированные данные из другой программы. Из-за несовместимости структуры данных при импорте некоторые значение из разных категорий были внесены в одну ячейку. Необходимо из этой ячейки отделить целые числовые значения. Пример таких неправильно импортированных данных отображен ниже на рисунке:
Сначала определим закономерность, по которой можно определить, что данные из разных категорий, несмотря на то, что они находятся в одной и той же строке. В нашем случае нас интересуют только числа, которые находятся вне квадратных скобок. Каким способом можно быстро выбрать из строк целые числа и поместить их в отдельные ячейки? Эффективным решением является гибкая формула основана на текстовых функциях.
В ячейку B3 введите следующую формулу:
Теперь скопируйте эту формулу вдоль целого столбца:
Выборка чисел из строк в отдельные ячейки.
Описание формулы для разделения текста по ячейкам:
Функция ПСТР возвращает текстовое значение содержащие определенное количество символов в строке. Аргументы функции:
- Первый аргумент – это ссылка на ячейку с исходным текстом.
- Второй аргумент – это позиция первого символа, с которого должна начинаться разделенная строка.
- Последний аргумент – это количество символов, которое должна содержать разделенная строка.
С первым аргументом ПСТР все понятно – это ссылка на ячейку A3. Второй аргумент мы вычисляем с помощью функции НАЙТИ(«]»;A3)+2. Она возвращает очередной номер символа первой закрывающейся квадратной скобки в строке. И к этому номеру мы добавляем еще число 2, так как нам нужен номер символа после пробела за квадратной скобкой. В последнем аргументе функция вычисляет какое количество символов будет содержать разделенная строка после разделения, учитывая положение квадратной скобки.
Обратите внимание! Что в нашем примере все исходные и разделенные строки имеют разную длину и разное количество символов. Именно поэтому мы называли такую формулу – гибкой, в начале статьи. Она подходит для любых условий при решении подобного рода задач. Гибкость придает ей сложная комбинация из функций НАЙТИ. Пользователю формулы достаточно определить закономерность и указать их в параметрах функций: будут это квадратные скобки либо другие разделительные знаки. Например, это могут быть пробелы если нужно разделить строку на слова и т.п.
В данном примере функция НАЙТИ во втором аргументе определяет положение относительно первой закрывающейся скобки. А в третьем аргументе эта же функция вычисляет положение нужного нам текста в строке относительно второй открывающийся квадратной скобки. Вычисление в третьем аргументе более сложное и оно подразумевает вычитание одной большей длинны текста от меньшей. А чтобы учитывать еще 2 пробела следует вычитать число 3. В результате чего получаем правильное количество символов в разделенной строке. С помощью такой гибкой формулы можно делать выборку разной длинны разделенного текста из разных длинны исходных строк.
Как разделить текст в Excel по столбцам?
Часто мы сталкиваемся с проблемой, когда у нас есть данные только в одном столбце, при этом было бы гораздо удобнее расцепить текст на несколько столбцов.
Например, разделить столбец с полными именами (Фамилия Имя Отчество) на отдельные столбцы с именами (Фамилия, Имя, Отчество).
Давайте разберемся как разбить текст в ячейке по столбцам на конкретном примере.
Предположим у нас имеется таблица с ФИО сотрудников компании:
Исходные данные для разделения
Для того, чтобы разделить текст в Excel по столбцам идем на панель вкладок и выбираем Данные -> Работа с данными -> Текст по столбцам:
Указание формата данных
На первом шаге выбираем формат данных:
Шаг 1. Указание формата данных
На выбор есть 2 варианта формата данных:
- С разделителями — разделение происходит по знаку-разделителю (пробел, запятая, точка и т.д.);
- Фиксированная ширина — разделение происходит по фиксированной ширине столбца.
Выбор разделителя для данных
В случае выбора формата с разделителями, как в нашем примере, на втором шаге выбираем какой конкретно знак-разделитель мы будем использовать:
Шаг 2. Выбор разделителя для данных
Можно выбрать как из стандартных знаков (знак табуляции, точка с запятой, запятая, пробел), так и из любых других (например, точка, символы $, @ и т.п.).
Флажок Считать последовательные разделители одним необходим если в исходных данных разделитель может быть продублирован (например, двойной пробел и т.д.).
Параметр Ограничитель строк позволяет не разделять по столбцам текст заключенный в кавычки.
Выбор формата данных для каждого столбца
На третьем шаге выбираем формат данных для каждого нового сформированного столбца:
Шаг 3. Выбор формата данных для каждого столбца
Разделение текста на столбцы с помощью мастера распределения текста по столбцам
С помощью мастера распределения текста по столбцам текст, содержащийся в одной ячейке, можно разделить на несколько.
Проверьте, как это работает!
-
Выделите ячейку или столбец с текстом, который вы хотите разделить.
-
На вкладке Данные нажмите кнопку Текст по столбцам.
-
В мастере распределения текста по столбцам установите переключатель с разделителями и нажмите кнопку Далее.
-
Выберите разделители для своих данных. Например, запятую и пробел. Данные можно предварительно просмотреть в окне Образец разбора данных.
-
Нажмите кнопку Далее.
-
В поле Поместить в выберите место на листе, где должны отображаться разделенные данные.
-
Нажмите кнопку Готово.
См. также
Разделение текста по столбцам с помощью функций
Нужна дополнительная помощь?
In this guide, we’re going to show you how to split text in Excel by a delimiter.
Download Workbook
We have a sample data which contains concatenated values separated by “|” characters. It is important that the data includes a specific delimiter character between each chunk of data to make splitting text easier.
Text to Columns feature for splitting text
When splitting text in Excel, the Text to Columns is one of the most common methods. You can use the Text to Columns feature with all versions of Excel. This feature can split text by a specific character count or delimiter.
- Start with selecting your data. You can use more than one cell in a column.
- Click Data > Text to Columns in the Ribbon.
- On the first step of the wizard, you have 2 options to choose from — these are slicing methods. Since our data in this example is split by delimiters, our choice is going to be Delimited.
- Click Next to continue
- Select the delimiters suitable to your data or choose a character length and click Next.
- Choose corresponding data types for the columns and the destination cell. Please note that if the destination cell is the same cell as where your data is, the original data will be overwritten.
- Click Finish to see the outcome.
Using formulas to split text
Excel has a variety of text formulas that you can use to locate delimiters and parse data. When using formulas to do so, Excel automatically updates the parsed values when the source is updated.
The formula used in this example uses Microsoft 365’s dynamic array feature, which allows you to populate multiple cells without using array formulas. If you can see the SEQUENCE formula, you can use this method.
Syntax
=TRIM(MID(SUBSTITUTE( text, separator, REPT( “ “, LEN( text ))),(SEQUENCE( 1, column count ) — 1 ) * LEN( text ) + 1,LEN( text )))
How it works
The formula replaces each separator character with space characters first. (see SUBSTITUTE) The number of space characters will be equal to the original string’s character count, which is enough number of spaces to separate each string block (see REPT and LEN).
The SEQUENCE function generates an array of numbers starting with 1, up to the number of maximum columns. Multiplying these sequential numbers with the length of the original string returns character numbers indicating the start of each block.
This approach uses the MID function to parse each string block with given start character number and the number of characters to return. Since the separators are replaced with space characters, each parsed block includes these spaces around the actual string. The TRIM function then removes these spaces.
Flash Fill
The Flash Fill is an Excel tool which can detect the pattern when entering data. A common example is to separate or merge first name and last names. Let’s say column A contains the first name — last name combinations. If you type in the corresponding first name in the same row for column B, Excel shows you a preview for the rest of the column.
Please note that the Flash Fill is available for Excel 2013 and newer versions only.
You can see the same behavior with strings using delimiters to separate data. Just select a cell in the adjacent column and start typing. Occasionally Excel will display a preview. If not, press Ctrl + E like below to split your text.
Power Query
Power Query is a powerful feature, not only for splitting text, but for data management in general. Power Query comes with its own text splitting tool which allows you to split text in multiple ways, like by delimiters, number of characters, or case of letters.
If you are using Excel 2016 or newer — including Microsoft 365 — you can find Power Query options under the Data tab’s Get & Transform section. Excel 2010 and 2013 users should download and install the Power Query as an add-in.
- Select the cells containing the text.
- Click Data > From Sheet. If the data is not in an Excel Table, Excel converts it into an Excel Table first.
- Once the Power Query window is open, find the Split Column under the Transform tab and click to see the options.
- Select the approach that fits your data layout. The data in our example is using By Delimiter since the data is separated by “|”.
- Power Query will show the delimiter character. If you are not seeing the expected delimiter, choose from the list or enter it yourself.
- Click OK to split text.
- If your data includes headers in its first row, like our example does, click Transform > Use First Row as Headers to keep them as headers.
- One you satisfied with the result, click the Home > Close & Load button to move the split data into your workbook.
VBA
VBA is the last text splitting option we want to show in this article. You can use VBA in two ways to split text:
- By calling the Text to Columns feature using VBA,
- Using VBA’s Split function to create array of sub-strings and using a loop to distribute the sub-strings into adjacent cells in the same row.
Text to Columns by VBA
The following code can split data from selected cells into the adjacent columns. Note that each supported delimiter is listed as an argument which you can enable or disable by giving them either True or False. Briefly, True means that you want to set that argument as a delimiter and False means ignore that character.
An easy way to generate a VBA code to split text is to record a macro. Start a recording section using the Record Macro button in the Developer tab, and use the Text to Columns feature. Once the recording is stopped, Excel will save the code for what you did during recording.
The code:
Sub VBATextToColumns_Multiple()
Dim MyRange As Range
Set MyRange = Selection ‘To work on a static range replace Selection via Range object, e.g., Range(“B6:B12”)
MyRange.TextToColumns _
Destination:=MyRange(1, 1).Offset(, 1), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
SemiColon:=False, _
Comma:=False, _
Space:=False, _
Other:=True, _
OtherChar:=»|»
End Sub
Split Function
Split function can be useful if you want to keep the split blocks in an array. You can only use this method for splitting because of the single delimiter constraint. The following code loops through each cell in a selected column, splits and stores text by the delimiter “|”, and uses another loop to populate the values in the array on cells. The final EntireColumn.AutoFit command adjusts the column widths.
The code:
Sub SplitText()
Dim StringArray() As String, Cell As Range, i As Integer
For Each Cell In Selection ‘To work on a static range replace Selection via Range object, e.g., Range(“B6:B12”)
StringArray = Split(Cell, «|») ‘Change the delimiter with a character suits your data
For i = 0 To UBound(StringArray)
Cell.Offset(, i + 1) = StringArray(i)
Cell.Offset(, i + 1).EntireColumn.AutoFit ‘This is for column width and optional.
Next i
Next
End Sub
Содержание
- Способ 1: Использование автоматического инструмента
- Способ 2: Создание формулы разделения текста
- Шаг 1: Разделение первого слова
- Шаг 2: Разделение второго слова
- Шаг 3: Разделение третьего слова
- Вопросы и ответы
Способ 1: Использование автоматического инструмента
В Excel есть автоматический инструмент, предназначенный для разделения текста по столбцам. Он не работает в автоматическом режиме, поэтому все действия придется выполнять вручную, предварительно выбирая диапазон обрабатываемых данных. Однако настройка является максимально простой и быстрой в реализации.
- С зажатой левой кнопкой мыши выделите все ячейки, текст которых хотите разделить на столбцы.
- После этого перейдите на вкладку «Данные» и нажмите кнопку «Текст по столбцам».
- Появится окно «Мастера разделения текста по столбцам», в котором нужно выбрать формат данных «с разделителями». Разделителем чаще всего выступает пробел, но если это другой знак препинания, понадобится указать его в следующем шаге.
- Отметьте галочкой символ разделения или вручную впишите его, а затем ознакомьтесь с предварительным результатом разделения в окне ниже.
- В завершающем шаге можно указать новый формат столбцов и место, куда их необходимо поместить. Как только настройка будет завершена, нажмите «Готово» для применения всех изменения.
- Вернитесь к таблице и убедитесь в том, что разделение прошло успешно.
Из этой инструкции можно сделать вывод, что использование такого инструмента оптимально в тех ситуациях, когда разделение необходимо выполнить всего один раз, обозначив для каждого слова новый столбец. Однако если в таблицу постоянно вносятся новые данные, все время разделять их таким образом будет не совсем удобно, поэтому в таких случаях предлагаем ознакомиться со следующим способом.
Способ 2: Создание формулы разделения текста
В Excel можно самостоятельно создать относительно сложную формулу, которая позволит рассчитать позиции слов в ячейке, найти пробелы и разделить каждое на отдельные столбцы. В качестве примера мы возьмем ячейку, состоящую из трех слов, разделенных пробелами. Для каждого из них понадобится своя формула, поэтому разделим способ на три этапа.
Шаг 1: Разделение первого слова
Формула для первого слова самая простая, поскольку придется отталкиваться только от одного пробела для определения правильной позиции. Рассмотрим каждый шаг ее создания, чтобы сформировалась полная картина того, зачем нужны определенные вычисления.
- Для удобства создадим три новые столбца с подписями, куда будем добавлять разделенный текст. Вы можете сделать так же или пропустить этот момент.
- Выберите ячейку, где хотите расположить первое слово, и запишите формулу
=ЛЕВСИМВ(
. - После этого нажмите кнопку «Аргументы функции», перейдя тем самым в графическое окно редактирования формулы.
- В качестве текста аргумента указывайте ячейку с надписью, кликнув по ней левой кнопкой мыши на таблице.
- Количество знаков до пробела или другого разделителя придется посчитать, но вручную мы это делать не будем, а воспользуемся еще одной формулой —
ПОИСК()
. - Как только вы запишете ее в таком формате, она отобразится в тексте ячейки сверху и будет выделена жирным. Нажмите по ней для быстрого перехода к аргументам этой функции.
- В поле «Искомый_текст» просто поставьте пробел или используемый разделитель, поскольку он поможет понять, где заканчивается слово. В «Текст_для_поиска» укажите ту же обрабатываемую ячейку.
- Нажмите по первой функции, чтобы вернуться к ней, и добавьте в конце второго аргумента
-1
. Это необходимо для того, чтобы формуле «ПОИСК» учитывать не искомый пробел, а символ до него. Как видно на следующем скриншоте, в результате выводится фамилия без каких-либо пробелов, а это значит, что составление формул выполнено правильно. - Закройте редактор функции и убедитесь в том, что слово корректно отображается в новой ячейке.
- Зажмите ячейку в правом нижнем углу и перетащите вниз на необходимое количество рядов, чтобы растянуть ее. Так подставляются значения других выражений, которые необходимо разделить, а выполнение формулы происходит автоматически.
Полностью созданная формула имеет вид =ЛЕВСИМВ(A1;ПОИСК(" ";A1)-1)
, вы же можете создать ее по приведенной выше инструкции или вставить эту, если условия и разделитель подходят. Не забывайте заменить обрабатываемую ячейку.
Шаг 2: Разделение второго слова
Самое трудное — разделить второе слово, которым в нашем случае является имя. Связано это с тем, что оно с двух сторон окружено пробелами, поэтому придется учитывать их оба, создавая массивную формулу для правильного расчета позиции.
- В этом случае основной формулой станет
=ПСТР(
— запишите ее в таком виде, а затем переходите к окну настройки аргументов. - Данная формула будет искать нужную строку в тексте, в качестве которого и выбираем ячейку с надписью для разделения.
- Начальную позицию строки придется определять при помощи уже знакомой вспомогательной формулы
ПОИСК()
. - Создав и перейдя к ней, заполните точно так же, как это было показано в предыдущем шаге. В качестве искомого текста используйте разделитель, а ячейку указывайте как текст для поиска.
- Вернитесь к предыдущей формуле, где добавьте к функции «ПОИСК»
+1
в конце, чтобы начинать счет со следующего символа после найденного пробела. - Сейчас формула уже может начать поиск строки с первого символа имени, но она пока еще не знает, где его закончить, поэтому в поле «Количество_знаков» снова впишите формулу
ПОИСК()
. - Перейдите к ее аргументам и заполните их в уже привычном виде.
- Ранее мы не рассматривали начальную позицию этой функции, но теперь там нужно вписать тоже
ПОИСК()
, поскольку эта формула должна находить не первый пробел, а второй. - Перейдите к созданной функции и заполните ее таким же образом.
- Возвращайтесь к первому
"ПОИСКУ"
и допишите в «Нач_позиция»+1
в конце, ведь для поиска строки нужен не пробел, а следующий символ. - Кликните по корню
=ПСТР
и поставьте курсор в конце строки «Количество_знаков». - Допишите там выражение
-ПОИСК(" ";A1)-1)
для завершения расчетов пробелов. - Вернитесь к таблице, растяните формулу и удостоверьтесь в том, что слова отображаются правильно.
Формула получилась большая, и не все пользователи понимают, как именно она работает. Дело в том, что для поиска строки пришлось использовать сразу несколько функций, определяющих начальные и конечные позиции пробелов, а затем от них отнимался один символ, чтобы в результате эти самые пробелы не отображались. В итоге формула такая: =ПСТР(A1;ПОИСК(" ";A1)+1;ПОИСК(" ";A1;ПОИСК(" ";A1)+1)-ПОИСК(" ";A1)-1)
. Используйте ее в качестве примера, заменяя номер ячейки с текстом.
Шаг 3: Разделение третьего слова
Последний шаг нашей инструкции подразумевает разделение третьего слова, что выглядит примерно так же, как это происходило с первым, но общая формула немного меняется.
- В пустой ячейке для расположения будущего текста напишите
=ПРАВСИМВ(
и перейдите к аргументам этой функции. - В качестве текста указывайте ячейку с надписью для разделения.
- В этот раз вспомогательная функция для поиска слова называется
ДЛСТР(A1)
, где A1 — та же самая ячейка с текстом. Эта функция определяет количество знаков в тексте, а нам останется выделить только подходящие. - Для этого добавьте
-ПОИСК()
и перейдите к редактированию этой формулы. - Введите уже привычную структуру для поиска первого разделителя в строке.
- Добавьте для начальной позиции еще один
ПОИСК()
. - Ему укажите ту же самую структуру.
- Вернитесь к предыдущей формуле «ПОИСК».
- Прибавьте для его начальной позиции
+1
. - Перейдите к корню формулы
ПРАВСИМВ
и убедитесь в том, что результат отображается правильно, а уже потом подтверждайте внесение изменений. Полная формула в этом случае выглядит как=ПРАВСИМВ(A1;ДЛСТР(A1)-ПОИСК(" ";A1;ПОИСК(" ";A1)+1))
. - В итоге на следующем скриншоте вы видите, что все три слова разделены правильно и находятся в своих столбцах. Для этого пришлось использовать самые разные формулы и вспомогательные функции, но это позволяет динамически расширять таблицу и не беспокоиться о том, что каждый раз придется разделять текст заново. По необходимости просто расширяйте формулу путем ее перемещения вниз, чтобы следующие ячейки затрагивались автоматически.
Еще статьи по данной теме:
Помогла ли Вам статья?
Полное руководство о том, как найти и извлечь текст из строки между двумя символами или словами в Excel и Google Sheets.
При работе с длинными строками часто может потребоваться извлечь из них определенную часть для более тщательного изучения. В Microsoft Excel и Google Sheets есть несколько способов получить текст между двумя символами или подстроками. В этой статье мы обсудим самые быстрые и эффективные из них.
Чтобы извлечь текст между двумя разными символами, вы можете использовать эту общую формулу:
СРЕДНЯЯ(клеткаПОИСК(символ1, клетка) + 1, ПОИСК(char2, клетка) — ПОИСК(символ1, клетка) — 1)
Например, чтобы получить текст в круглых скобках из строки в A2, используйте следующую формулу:
=СРЕДН(A2, ПОИСК(«(«, A2)+1, ПОИСК(«)», A2) — ПОИСК(«(«, A2) -1)
Аналогичным образом вы можете извлечь текст между фигурными скобками, квадратными скобками, угловыми скобками и так далее.
Полезный совет! Если вы имеете дело с числами и хотите, чтобы результатом было число, а не числовая строка, то дополнительно выполните какое-нибудь арифметическое действие, которое не изменит результат, например, прибавьте 0 или умножьте на 1.
Например:
=СРЕДН(A2, ПОИСК(«(«, A2)+1, ПОИСК(«)», A2) — ПОИСК(«(«, A2) -1) *1
Обратите внимание на правильное выравнивание извлеченных значений по умолчанию в ячейках, типичное для чисел:
Как работает эта формула
В основе этой формулы лежит функция MID, которая извлекает заданное количество символов из строки, начиная с определенной позиции:
MID(текст, start_num, num_chars)
Текст это ячейка, содержащая исходную строку (A2).
Исходное положение (start_num) — это символ, который следует сразу за открывающей скобкой. Итак, вы находите позицию «(» с помощью функции ПОИСК и добавляете к ней 1:
ПОИСК(«(«, A2) +1
Чтобы выяснить, сколько символов нужно извлечь (num_chars), вы определяете положение закрывающих скобок и вычитаете из него положение открывающих скобок. Кроме того, вы вычитаете 1, чтобы исключить вторые круглые скобки:
ПОИСК(«)», A2) — ПОИСК(«(«, A2) -1
Имея все необходимые данные, функция MID выдает именно то, что вам нужно — в нашем случае текст в скобках:
СРЕДНЯЯ(A2, 19, 2)
Поскольку MID является текстовой функцией, она всегда создает строку, даже если извлечение включает только числа. Чтобы получить число в качестве конечного результата, мы умножаем вывод MID на единицу или добавляем к нему ноль. Если вы извлекаете текст, эта операция не требуется.
Извлечь текст между двумя строками/словами в Excel
Чтобы втянуть текст между двумя строками или словами, формула очень похожа на ту, что обсуждалась выше. Требуется только пара различных настроек: чтобы удалить слова-разделители из конечного результата, вы добавляете и вычитаете длину самих слов, возвращаемых функцией LEN:
СРЕДНЯЯ(клеткаПОИСК(слово1, клетка) + ДЛСТР(слово1), ПОИСК(слово2, клетка) — ПОИСК(слово1, клетка) — ЛЕН(слово1))
Например, для извлечения подстрок между словами «начало» и «конец» используется следующая формула:
=ЕСЛИОШИБКА(СРЕДН(A2, ПОИСК(«начало», A2) + ДЛСТР(«начало»), ПОИСК(«конец», A2) — ПОИСК(«начало», A2) — ДЛСТР(«начало»)), » «)
Советы:
- Чтобы избежать начальных и конечных пробелов в результатах, включите пробел после слова 1, такого как «начало», и перед словом 2, таким как «конец». Кроме того, вы можете использовать функцию TRIM, чтобы избавиться от лишних пробелов.
- Если одно или оба указанных слова не найдены в исходной строке, формула вернет ошибку #ЗНАЧ! ошибка. Чтобы перехватить эту ошибку и заменить ее пустой строкой («»), используйте функцию ЕСЛИОШИБКА, как показано в приведенном выше примере.
Получить текст между двумя экземплярами одного и того же символа в Excel
Общая формула для извлечения текста из строки между двумя вхождениями одного и того же символа:
СРЕДНЯЯ(клеткаПОИСК(уголь, клетка) +1, ПОИСК (уголь, клеткаПОИСК (уголь, клетка) +1) — ПОИСК (уголь, клетка)-1)
Например, чтобы извлечь текст, заключенный в двойные кавычки, из строки в ячейке A2, введите следующую формулу в ячейке B2:
=СРЕДН(A2, ПОИСК(«»»», A2) +1, ПОИСК(«»»», A2, ПОИСК(«»»»,A2) +1) — ПОИСК(«»»», A2) -1 )
Обратите внимание на то, как вы ищете двойную кавычку в Excel. Между внешними кавычками вводится еще один набор кавычек. Первая кавычка используется, чтобы избежать особого значения второй кавычки, так что «» между крайними кавычками означает одинарную двойную кавычку.
Другой способ поставить двойную кавычку («») в формулу Excel — использовать функцию СИМВОЛ с кодовым номером 34.
=MID(A2, ПОИСК(СИМВОЛ(34), A2) +1, ПОИСК(СИМВОЛ(34), A2, ПОИСК(СИМВОЛ(34),A2) +1) — ПОИСК(СИМВОЛ(34), A2) -1 )
Как работает эта формула
Первые два аргумента этой формулы MID не вызывают вопросов:
- A2 — это текстовая строка для поиска, а
- SEARCH(«»»», A2) +1 — начальный номер, т.е. позиция первой кавычки +1.
Самая сложная часть — вычисление количества символов для извлечения (num_chars):
Во-первых, мы находим позицию второй цитаты, вложив одну функцию ПОИСК в другую.
ПОИСК(«»»», A2, ПОИСК(«»»»,A2) +1)
Из позиции 2-й цитаты (в А2 это 27) вычесть позицию 1-й цитаты (в А2 это 10), а затем вычесть 1, чтобы исключить из результата саму цитату:
ПОИСК(«»»», A2, ПОИСК(«»»»,A2) +1) — ПОИСК(«»»», A2) -1
Приведенная выше формула возвращает 16, что является последней недостающей частью головоломки, в которой нуждается функция MID:
=СРЕДНЕЕ(A2, 10+1, 16)
Проще говоря, MID ищет ячейку A2, начиная с символа после первой кавычки (10+1), и возвращает следующие 16 символов.
Формула Excel с учетом регистра для извлечения текста между символами
Как вы, наверное, знаете, в Microsoft Excel есть две функции для поиска строк: ПОИСК (без учета регистра) и НАЙТИ (с учетом регистра).
В ситуации, когда разделителем является буква в конкретном регистре, просто используйте НАЙТИ вместо ПОИСК. Чтобы проиллюстрировать разницу, давайте сравним две приведенные ниже формулы.
Предположим, вы хотите извлечь из строки в A2 число между двумя заглавными буквами «X».
Функция ПОИСК в этом случае работает некорректно, так как не различает «х» и «Х»:
=СРЕДН(A2, ПОИСК(«X», A2) +1, ПОИСК(«X», A2, ПОИСК(«X»,A2) +1) — ПОИСК(«X», A2) -1) +0
В результате извлекается текст между «x», а не между «X», который мы ищем:
В то время как функция НАЙТИ с учетом регистра работает прекрасно:
=СРЕДН(A2, НАЙТИ(«X», A2) +1, НАЙТИ(«X», A2, НАЙТИ(«X»,A2) +1) — НАЙТИ(«X», A2) -1) +0
И приносит именно тот результат, который нам нужен:
В Excel 365 вы можете легко получить текст между символами, используя функции ТЕКСТПЕРЕД и ТЕКСТПОСЛЕ.
ТЕКСТПЕРЕД(ТЕКСТПОСЛЕ(клетка, символ1), char2)
Например, чтобы извлечь текст между скобками, формула проста:
=ТЕКСТПЕРЕД(ТЕКСТПОСЛЕ(A2, «(«), «)»)
Эта формула также хорошо работает для извлечения текста между двумя вхождениями одного и того же символа.
Например, чтобы получить текст в двойных кавычках, формула принимает следующий вид:
=ТЕКСТПЕРЕД(ТЕКСТПОСЛЕ(A2, «»»»), «»»»)
По умолчанию обе функции TEXTAFTER и TEXTBEFORE чувствительны к регистру. Чтобы отключить чувствительность к регистру, вы устанавливаете 4-й аргумент (match_mode) на 1 или ИСТИНА.
Например, приведенная ниже формула без учета регистра распознает как строчную букву «x», так и прописную букву «X» в качестве разделителя:
=ТЕКСТПЕРЕД(ТЕКСТПОСЛЕ(A2, «x», ,1), «x», ,1) +0
Как работает эта формула
Работая изнутри наружу, вы используете функцию TEXTAFTER для извлечения текста после открывающих скобок:
ТЕКСТ ПОСЛЕ(A2, «(«)
И передать возвращенную подстроку функции TEXTBEFORE, попросив ее найти закрывающие круглые скобки в этой подстроке и вернуть текст перед ней.
TEXTBEFORE(«Непредвиденная ошибка)», «)»)
Сделанный 🙂
Получить текст между двумя символами в Google Sheets
Чтобы найти текст между двумя символами в Google Sheets, вам не нужно изобретать велосипед 🙂
Комбинации MID SEARCH, используемые в Excel, безупречно работают и в электронных таблицах Google.
Например, чтобы получить текст в квадратных скобках, используйте следующую формулу:
=СРЕДН(A2, ПОИСК(«[«, A2)+1, SEARCH(«]», А2) — ПОИСК(«[«А2)-1)
Чтобы извлечь текст между двумя запятыми, используйте следующую формулу:
Вот как можно извлечь текст между двумя символами или словами в электронных таблицах Microsoft Excel и Google. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Практические рабочие тетради
Извлечь текст между символами в Excel (файл .xlsx)
Получить текст между символами в Google Sheets (онлайн лист)