Как вырезать нужный текст в Excel: от простых способов до профессиональных приёмов

Работа с текстовыми данными в Microsoft Excel часто требует не просто копирования, а точного извлечения нужных фрагментов.hether вы парсите отчёты, очищаете импортированные данные или готовите информацию для анализа — умение вырезать текст по заданным критериям экономит часы рутинной работы. В отличие от текстовых редакторов, где выделение делается мышью, в Excel для этого существуют десятки инструментов: от ручных методов до автоматизированных формул.

Проблема в том, что большинство пользователей ограничиваются функциями ЛЕВСИМВ() и ПРАВСИМВ(), не подозревая о возможностях регулярных выражений (в новых версиях), текстового разбора по разделителям или даже Power Query. Эта статья закрывает пробел: здесь вы найдёте уникальные комбинации функций для извлечения текста между двумя символами или после последнего пробела, а также узнаете, как обработать тысячи строк за секунды без макросов. Начнём с базы — и дойдём до приёмов, которые используют 1% экспертов.

1. Базовые функции: ЛЕВСИМВ, ПРАВСИМВ и ПСТР

Три кита текстового разбора в Excel — это функции ЛЕВСИМВ(), ПРАВСИМВ() и ПСТР(). Они работают по принципу "вырезать N символов с начала/конца/середины строки". Например, если в ячейке A1 лежит текст "Инв. №7845-2023", а вам нужно извлечь только номер 7845, эти функции станут первым инструментом.

Формулы работают так:

  • 🔹 =ЛЕВСИМВ(A1; 5) — вернёт первые 5 символов ("Инв. ").
  • 🔹 =ПРАВСИМВ(A1; 4) — последние 4 символа ("2023").
  • 🔹 =ПСТР(A1; 6; 4) — 4 символа, начиная с 6-го ("7845").

Главный недостаток метода — привязка к фиксированному количеству символов. Если длина текста варьируется (например, "Инв. №123" vs "Инвойс #45678"), формулы придётся корректировать вручную. Решение: комбинировать их с функциями поиска позиций (НАЙТИ() или ПОИСК()).

2. Извлечение текста по разделителям: ТЕКСТ.ПОСЛЕ, ТЕКСТ.ДО и альтернативы

В Excel 2019 и новее появились долгожданные функции ТЕКСТ.ПОСЛЕ() и ТЕКСТ.ДО(), которые решают 80% задач по разбору текста. Они извлекают фрагменты после или до указанного разделителя — без необходимости считать позиции символов. Например:

  • 📌 =ТЕКСТ.ПОСЛЕ(A1; "№") — вернёт всё после "№" ("7845-2023").
  • 📌 =ТЕКСТ.ДО(A1; "-"; -1) — всё до последнего тире ("Инв. №7845").

Для старых версий Excel альтернатива — комбинация ПСТР() с НАЙТИ():

=ПСТР(A1; НАЙТИ("№";A1)+1; НАЙТИ("-";A1)-НАЙТИ("№";A1)-1)

Эта формула извлечёт текст между "№" и "-". Обратите внимание на -1 в конце — она корректирует длину, чтобы не захватить лишний символ.

📊 Какую версию Excel вы используете?
2010 или старше
2013-2016
2019-2021
365 (подписка)
Не знаю

3. Разбор текста по нескольким разделителям: ТЕКСТРАЗБ() и Power Query

Когда текст содержит несколько разделителей (например, "Иванов;Иван;Иванович;1990"), функция ТЕКСТРАЗБ() (или TEXTSPLIT в английской версии) разобьёт строку на отдельные ячейки по заданному символу:

=ТЕКСТРАЗБ(A1; ";")

Для сложных случаев (например, когда разделители разные или данные грязные) лучше использовать Power Query:

  1. Выделите столбец → Данные → Из таблицы/диапазона.
  2. В редакторе Power Query выберите столбец → Разделить столбец → По разделителю.
  3. Укажите символ(ы) разделителя (например, ;, ,, пробел).
  4. Нажмите Закрыть и загрузить.

Power Query справится даже с нестандартными разделителями (например, несколькими пробелами подряд) и сохранит шаги обработки для повторного использования.

Удалить лишние пробелы (=СЖПРОБЕЛЫ())

Заменить нестандартные разделители (=ПОДСТАВИТЬ())

Проверить кодировку (особенно при импорте из CSV)

Создать резервную копию исходных данных-->

4. Продвинутые приёмы: регулярные выражения и пользовательские функции

В Excel 365 появилась поддержка регулярных выражений через функции ТЕКСТ.ПОСЛЕ/ТЕКСТ.ДО с шаблонами. Например, чтобы извлечь все цифры из строки "Товар 12345, цена 999 руб.", используйте:

=ТЕКСТ.ПОСЛЕ(ПОДСТАВИТЬ(A1;ТЕКСТ.ДО(A1; "[0-9]";-1);""); " ")

Для старых версий придётся писать пользовательскую функцию на VBA. Пример кода для извлечения текста между двумя символами (например, между [ и ]):

Function ExtractBetween(Text As String, StartChar As String, EndChar As String) As String

Dim StartPos As Integer, EndPos As Integer

StartPos = InStr(Text, StartChar) + Len(StartChar)

EndPos = InStr(StartPos, Text, EndChar)

If StartPos > 0 And EndPos > 0 Then

ExtractBetween = Mid(Text, StartPos, EndPos - StartPos)

Else

ExtractBetween = "Не найдено"

End If

End Function

Чтобы использовать её:

  1. Нажмите Alt+F11, вставьте код в модуль.
  2. В ячейке напишите =ExtractBetween(A1; "["; "]").
Как ускорить работу VBA-функций

Используйте Application.ScreenUpdating = False в начале кода и True в конце, чтобы отключить перерисовку экрана.

Объявляйте переменные с явным типом (Dim i As Long вместо Dim i).

Избегайте циклов по ячейкам — работайте с массивами данных.

5. Извлечение текста по шаблону: ПОИСКПОЗ, ИНДЕКС и комбинации функций

Допустим, у вас список email-адресов в формате "имя_фамилия@домен.com", и нужно вытащить домен ("домен.com"). Решение — комбинация ПОИСКПОЗ(), ИНДЕКС() и ПОИСК():

=ПСТР(A1; ПОИСК("@";A1)+1; ДЛСТР(A1)-ПОИСК("@";A1))

Для более сложных шаблонов (например, извлечь дату в формате ДД.ММ.ГГГГ из произвольного текста) используйте вложенные функции:

=ЕСЛИОШИБКА(

ДАТА(

ПСТР(A1; ПОИСК(".",A1;ПОИСК(".",A1)+1)+1;4);

ПСТР(A1; ПОИСК(".",A1)+1;2);

ЛЕВСИМВ(A1; ПОИСК(".",A1)-1)

);

"Некорректный формат"

)

Эта формула разберёт строку типа "Заказ от 15.08.2023 получен" и вернёт дату 15.08.2023 в формате даты Excel.

6. Автоматизация: макросы для массовой обработки

Если нужно обработать тысячи строк, ручной ввод формул неэффективен. Макросы на VBA решают задачу за секунды. Пример кода для извлечения всех чисел из столбца A и записи результата в столбец B:

Sub ExtractNumbers()

Dim rng As Range, cell As Range

Dim regex As Object, matches As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "\d+"

regex.Global = True

For Each cell In Selection

If regex.Test(cell.Value) Then

Set matches = regex.Execute(cell.Value)

cell.Offset(0, 1).Value = matches(0)

End If

Next cell

End Sub

Как использовать:

  1. Выделите столбец с данными.
  2. Нажмите Alt+F8, выберите макрос ExtractNumbersВыполнить.

Для регулярного использования сохраните файл как .xlsm (с поддержкой макросов) и назначьте макросу горячую клавишу через Сервис → Макрос → Назначить сочетание клавиш.

7. Ошибки и решения: почему формулы не работают

Даже простые функции могут возвращать ошибки. Рассмотрим типичные случаи и способы их исправления:

Ошибка Причина Решение
#ЗНАЧ! Функция НАЙТИ() не нашла искомый символ. Используйте ЕСЛИОШИБКА() или ПОИСК() (регистронезависимый поиск).
#ИМЯ? Опечатка в названии функции (например, ЛЕВСИМ вместо ЛЕВСИМВ). Проверьте синтаксис. В английской версии Excel используйте LEFT, RIGHT, MID.
Неправильный результат В формуле не учтена переменная длина текста. Замените фиксированные значения (например, ЛЕВСИМВ(A1;5)) на динамические (НАЙТИ()).
#ЧИСЛО! Отрицательная или слишком большая длина в ПСТР(). Проверьте аргументы функции: ПСТР(текст; начало; длина).
⚠️ Внимание: Функции ТЕКСТ.ПОСЛЕ() и ТЕКСТ.ДО() в Excel 365 поддерживают регулярные выражения только в английской локализации. В русской версии для шаблонов используйте ПОИСК() с вложенными функциями.

Частые вопросы (FAQ)

Как вырезать текст между двумя одинаковыми символами (например, между кавычками)?

Используйте комбинацию:

=ПСТР(A1; НАЙТИ("""";A1)+1; НАЙТИ("""";A1;НАЙТИ("""";A1)+1)-НАЙТИ("""";A1)-1)

Для Excel 365 проще:

=ТЕКСТ.ПОСЛЕ(ТЕКСТ.ДО(A1; """"; 2); """"; 1)
Можно ли извлечь текст после последнего пробела в ячейке?

Да, используйте:

=ПРАВСИМВ(A1; ДЛСТР(A1)-НАЙТИ("~"; ПОДСТАВИТЬ(A1; " "; "~"; ЛЕН(A1)-ЛЕН(ПОДСТАВИТЬ(A1; " "; "")))))

Или в Excel 365:

=ТЕКСТ.ПОСЛЕ(A1; " "; -1)
Как вырезать все цифры из текста?

В Excel 365:

=ТЕКСТ.ПОСЛЕ(ПОДСТАВИТЬ(A1; ТЕКСТ.ДО(A1; "[0-9]"; -1); ""); " ")

В старых версиях напишите пользовательскую функцию на VBA (см. раздел 4).

Почему функция ТЕКСТРАЗБ не работает с несколькими разделителями?

Функция ТЕКСТРАЗБ() разбивает текст только по одному типу разделителя за раз. Для нескольких разделителей (например, ";" и ",") используйте Power Query или заменяйте разделители на один символ перед разбором:

=ТЕКСТРАЗБ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; ","; "|"); ";"; "|"); "|")
Как сохранить результаты разбора текста при закрытии файла?

Если вы использовали Power Query, нажмите Закрыть и загрузить в... и выберите Таблица вместо Связь. Для формул преобразуйте их в значения: выделите результаты → КопироватьСпециальная вставка → Значения.