Выделение фрагментов текста в Excel: от простого к сложному

Иван Корнев·21.05.2024·4 мин

Чтобы извлечь часть строки в Excel, используйте функцию ТЕКСТПОСЛЕ (для новых версий) или комбинацию ПСТР с НАЙТИ. Для получения текста после символа формула выглядит так: =ТЕКСТПОСЛЕ(A1; ";"). Если нужно выделить середину строки между двумя разделителями, примените вложенные функции поиска позиции. Ниже приведены готовые решения для разных версий программы и конкретных задач.

Извлечение текста после конкретного символа

Задача получить всё, что находится после определённого знака (запятой, дефиса, пробела), решается по-разному в зависимости от версии вашего Excel.

Способ для современных версий (Excel 365, 2021+)

Самый простой метод — использование функции ТЕКСТПОСЛЕ (англ. TEXTAFTER). Она автоматически находит разделитель и возвращает остаток строки.

=ТЕКСТПОСЛЕ(A2; "-")

Если в ячейке A2 записано Товар-12345, формула вернет 12345.

Функция ТЕКСТПОСЛЕ игнорирует регистр по умолчанию. Если нужен строгий поиск с учётом регистра, добавьте аргумент 1 в конце: =ТЕКСТПОСЛЕ(A2; "-"; ; ; ; 1).

Универсальный способ (Все версии Excel)

В старых версиях используется связка функций ПСТР, НАЙТИ и ДЛСТР. Логика следующая: найти позицию символа, прибавить единицу (чтобы начать со следующего знака) и взять остаток длины строки.

Формула для извлечения всего текста после точки с запятой:

=ПСТР(A2; НАЙТИ(";"; A2) + 1; ДЛСТР(A2))

Разбор работы:

  1. НАЙТИ(";"; A2) — определяет номер позиции символа ;.
  2. + 1 — смещает начало выделения на один знак вправо.
  3. ДЛСТР(A2) — гарантирует, что будет захвачен весь оставшийся текст до конца ячейки.

Если разделитель отсутствует в строке, функция НАЙТИ вернёт ошибку #ЗНАЧ!. Чтобы избежать этого, оберните формулу в ЕСЛИОШИБКА: =ЕСЛИОШИБКА(ПСТР(...); "")

Получение текста после последнего вхождения символа

Стандартные функции ищут первое вхождение. Чтобы получить текст после последнего разделителя (например, фамилию из пути C:\Папка\Фамилия), используйте трюк с подстановкой пробелов:

=СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(A2; "\"; ПОВТОР(" "; 100)); 100))

Эта формула заменяет все обратные слеши на длинные цепочки пробелов, а затем обрезает правые 100 символов, удаляя лишние пробелы функцией СЖПРОБЕЛЫ.

Как выделить середину строки

Извлечение центральной части текста требует знания позиций начала и конца нужного фрагмента.

Текст между двумя одинаковыми разделителями

Частая задача: получить значение между первым и вторым дефисом в строке вида Код-Значение-Дата.

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

Принцип действия:

  1. Первое НАЙТИ находит позицию первого дефиса (начало отсчета).
  2. Второе НАЙТИ (вложенное) ищет второй дефис, начиная поиск сразу после первого.
  3. Разница позиций минус 1 дает длину искомого фрагмента.

Извлечение фиксированного количества символов из центра

Если нужно взять, например, 5 символов строго из середины строки независимо от содержания:

=ПСТР(A2; ОКРУГЛ(ДЛСТР(A2)/2 - 2; 0); 5)

Здесь ДЛСТР(A2)/2 находит центр, -2 смещает начало назад (так как нам нужно 5 символов: 2 слева, 1 центр, 2 справа), а ОКРУГЛ устраняет дробную часть позиции.

Для сложных случаев, когда разделителей много и нужно выбрать конкретный элемент (например, третье слово в предложении), в Excel 365 удобнее использовать функцию ТЕКСТРАЗД (TEXTSPLIT), превращающую строку в массив, из которого можно взять нужный индекс.

Сравнение методов обработки текста

ЗадачаРекомендуемая функция (Новые версии)Альтернатива (Старые версии)Сложность
Текст после символаТЕКСТПОСЛЕПСТР + НАЙТИНизкая
Текст до символаТЕКСТДОЛЕВСИМВ + НАЙТИНизкая
Между двумя знакамиВложенные ТЕКСТПОСЛЕ/ТЕКСТДОПСТР + двойное НАЙТИСредняя
После последнего знакаТЕКСТПОСЛЕ (с аргументом номера)ПОДСТАВИТЬ + ПРАВСИМВВысокая
Разбиение на частиТЕКСТРАЗДТекст по столбцам (меню)Средняя

Частые ошибки при работе с текстом

  1. Ошибка #ЗНАЧ! при отсутствии символа. Функции НАЙТИ и ПОИСК не могут найти то, чего нет. Всегда используйте ЕСЛИОШИБКА(формула; "Текст_если_ошибка") для защиты от сбоев.
  2. Лишние пробелы в результате. При извлечении подстрок часто захватываются скрытые пробелы. Оборачивайте итоговую формулу в СЖПРОБЕЛЫ (TRIM), чтобы очистить данные.
  3. Путаница между НАЙТИ и ПОИСК.
    • НАЙТИ (FIND) — чувствителен к регистру (А ≠ а).
    • ПОИСК (SEARCH) — игнорирует регистр и поддерживает маски (?, *). Выбирайте функцию в зависимости от требуемой точности.

FAQ

Как извлечь текст после второго вхождения символа? Используйте функцию ТЕКСТПОСЛЕ с указанием номера экземпляра: =ТЕКСТПОСЛЕ(A1; "-"; 2). В старых версиях придется дважды применять формулу с НАЙТИ, сдвигая начальную позицию поиска.

Можно ли использовать эти формулы для дат? Да, если дата хранится как текст. Если это формат даты Excel, сначала преобразуйте её в текст через ТЕКСТ(ячейка; "ДД.ММ.ГГГГ"), а затем применяйте функции извлечения.

Что делать, если разделитель состоит из нескольких символов (например, " -> ")? Функции ТЕКСТПОСЛЕ и НАЙТИ отлично работают с многосимвольными разделителями. Просто укажите всю цепочку символов в кавычках: =ТЕКСТПОСЛЕ(A1; " -> ").