Функция ПСТР в Excel: полное руководство по извлечению подстрок

Функция ПСТР (или MID в английской версии Excel) возвращает ошибку #ЗНАЧ!, если вы пытаетесь извлечь подстроку за пределами исходного текста — например, когда начальная позиция больше длины строки. Чтобы избежать этой проблемы, сначала проверьте длину текста с помощью ДЛСТР, а уже потом применяйте ПСТР с корректными параметрами. Эта функция незаменима для работы с фрагментами данных: извлечения фамилий из ФИО, кодировок из артикулов или цифр из алфавитно-цифровых строк.

В отличие от ЛЕВСИМВ и ПРАВСИМВ, которые извлекают символы с краёв, ПСТР позволяет указать точную стартовую позицию и количество символов для вырезки из середины строки. Например, чтобы достать "2026" из строки "Договор_2026_123", достаточно задать начальную позицию 9 и длину 4. Но здесь кроются подводные камни: если исходный текст содержит пробелы или невидимые символы (например, переносы строк), функция может вернуть неожиданный результат.

Разберёмся, как правильно использовать ПСТР в Excel 2010–2023 и Office 365, включая обработку ошибок, динамические формулы и комбинации с другими функциями (ПОИСК, НАЙТИ, ЕСЛИОШИБКА). Вы узнаете, почему иногда функция возвращает пустую строку, как извлекать текст между разделителями и автоматизировать процесс для тысяч строк.

Синтаксис функции ПСТР: разбор аргументов

Формула ПСТР в Excel имеет три обязательных аргумента:

ПСТР(текст; начальная_позиция; количество_символов)

Где:

  • 📌 текст — строка или ссылка на ячейку с текстом, из которого извлекается подстрока. Может быть результатом другой функции (например, СЦЕПИТЬ).
  • 📍 начальная_позиция — номер символа, с которого начинается извлечение (первый символ имеет позицию 1, а не 0!).
  • ✂️ количество_символов — сколько символов нужно вернуть. Если указать 0, функция вернёт пустую строку.

Пример: =ПСТР("Excel2023"; 6; 4) вернёт "2023", так как извлекает 4 символа, начиная с 6-й позиции. Если же указать начальная_позиция = 10, результат будет пустым — в строке всего 9 символов.

⚠️ Внимание: В английской версии Excel функция называется MID, а в немецкой — TEIL. При копировании формул из иностранных источников заменяйте название на ПСТР, иначе получите ошибку #ИМЯ?.

Практическое применение ПСТР: 5 реальных примеров

Рассмотрим типичные задачи, где ПСТР экономит часы ручной работы:

  1. Извлечение года из даты в текстовом формате

    Если дата хранится как строка (например, "15.01.2026"), формула =ПСТР(A1; 7; 4) вернёт "2026".

  2. Выделение кода продукта из артикула

    Для строки "ART-12345-XL" код 12345 извлекается так: =ПСТР(A1; 5; 5).

  3. Разделение ФИО на отдельные столбцы

    Если в ячейке "Иванов Иван Иванович", фамилию получим как =ПСТР(A1; 1; ПОИСК(" "; A1)-1).

Для динамического извлечения текста между двумя разделителями (например, "_") используйте комбинацию:

=ПСТР(A1; ПОИСК("_"; A1)+1; ПОИСК("_"; A1; ПОИСК("_"; A1)+1) - ПОИСК("_"; A1)-1)
📊 Как часто вы используете ПСТР в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда не слышал о такой функции

Ошибки при работе с ПСТР и как их исправить

Даже опытные пользователи сталкиваются с ошибками при работе с ПСТР. Вот самые распространённые:

ОшибкаПричинаРешение
#ЗНАЧ!Начальная позиция больше длины текстаПроверьте длину строки с ДЛСТР или используйте ЕСЛИОШИБКА
#ИМЯ?Опечатка в названии функцииУбедитесь, что написали ПСТР (не ПСТ или ПОДСТР)
Пустая строкаКоличество символов = 0 или отрицательноеПроверьте третий аргумент функции

Чтобы избежать ошибок, оберните ПСТР в ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(ПСТР(A1; B1; C1); "")
⚠️ Внимание: Если исходный текст содержит непечатаемые символы (например, табуляцию или перевод строки), функция ПСТР может вернуть неожиданный результат. Очистите данные с помощью СЖПРОБЕЛЫ или ПЕЧСИМВ.

ПСТР vs ЛЕВСИМВ и ПРАВСИМВ: когда что использовать

Все три функции извлекают подстроки, но работают по-разному:

  • 🔹 ЛЕВСИМВ — берёт символы слева (например, первые 3 символа). Синтаксис: =ЛЕВСИМВ(A1; 3).
  • 🔸 ПРАВСИМВ — берёт символы справа (например, последние 2 символа). Синтаксис: =ПРАВСИМВ(A1; 2).
  • 🔶 ПСТР — извлекает символы с любой позиции (например, 4 символа, начиная с 5-го).

Выбор функции зависит от задачи:

  • 📌 Нужны первые/последние символы → ЛЕВСИМВ/ПРАВСИМВ.
  • 📍 Нужна подстрока из середины → ПСТР.
  • 🔄 Нужно извлечь текст между разделителями → комбинация ПСТР + ПОИСК.

Динамическое извлечение текста: комбинации с ПОИСК и НАЙТИ

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

Пример: извлечь домен из email user@example.com:

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

Разберём формулу по шагам:

  1. ПОИСК("@"; A1) находит позицию символа @ (например, 5).
  2. ПОИСК("@"; A1)+1 сдвигает стартовую позицию на 1 вправо (чтобы пропустить @).
  3. ДЛСТР(A1)-ПОИСК("@"; A1) вычисляет количество символов после @.

Для извлечения текста между двумя одинаковыми разделителями (например, "/") используйте:

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

1. Убедитесь, что начальная позиция не превышает длину строки

2. Проверьте, нет ли в тексте скрытых символов (пробелов, табуляций)

3. Используйте ПОИСК/НАЙТИ для динамического определения позиций

4. Оберните формулу в ЕСЛИОШИБКА для обработки исключений-->

Автоматизация с ПСТР: обработка больших массивов данных

Если нужно применить ПСТР к тысячам строк, используйте прогрессивную нумерацию или Power Query:

  • 📊 Маркер заполнения: протяните формулу вниз, Excel автоматически скорректирует ссылки на ячейки.
  • 🔄 Power Query: импортируйте данные → добавьте пользовательский столбец с формулой ПСТР → загрузите обратно в Excel.
  • 📈 Таблицы Excel: преобразуйте диапазон в таблицу (Ctrl+T), формулы будут копироваться автоматически.

Для извлечения данных из неструктурированного текста (например, логов) комбинируйте ПСТР с:

  • 🔍 ПОИСК/НАЙТИ — для поиска маркеров.
  • 📏 ДЛСТР — для вычисления длины подстроки.
  • 🔢 ЗНАЧЕН — для преобразования текста в число.

Пример: извлечь числовое значение из строки "Температура: 25.5°C":

=ЗНАЧЕН(ПСТР(A1; ПОИСК(":"; A1)+2; ПОИСК("°"; A1)-ПОИСК(":"; A1)-2))
Как ускорить работу с ПСТР в больших файлах

1. Отключите автоматический пересчёт формул (Формулы → Параметры вычислений → Вручную).

2. Используйте вспомогательные столбцы для промежуточных вычислений (например, отдельно храните позиции разделителей).

3. Для критически важных задач перепишите логику на VBA — макросы работают быстрее на больших объёмах данных.

ПСТР в Excel Online и мобильной версии: особенности

Функция ПСТР работает одинаково во всех версиях Excel, но в Excel Online и мобильном приложении есть нюансы:

  • 🌐 Excel Online:
    • ✅ Поддерживает все аргументы ПСТР.
    • ⚠️ Нет подсказок по формулам (как в десктопной версии).
    • 🔄 Автозаполнение работает медленнее.
  • 📱 Мобильное приложение (Android/iOS):
    • ✅ Полная поддержка синтаксиса.
    • ⚠️ Сложно вводить длинные формулы на сенсорной клавиатуре.
    • 📌 Совет: используйте голосовой ввод для функций.

В мобильной версии удобнее работать с ПСТР через режим формул:

  1. Коснитесь ячейки → значок fx.
  2. Введите ПСТР в строку поиска.
  3. Заполните аргументы, тапая по ячейкам (не вручную!).
⚠️ Внимание: В Excel для Mac 2011 и более ранних версиях функция ПСТР может некорректно работать с юникод-символами (например, кириллицей в смешанных строках). Обновите программу или используйте ПОДСТАВИТЬ для нормализации текста.

Часто задаваемые вопросы

Как извлечь текст после последнего разделителя (например, последнюю папку в пути "C:\Users\Doc\File.txt")?

Используйте комбинацию ПСТР, ПОИСК и ДЛСТР:

=ПСТР(A1; ПОИСК("|"; ПОДСТАВИТЬ(A1; "\"; "|"; ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1; "\"; ""))))+1; ДЛСТР(A1))

Для пути с обратными слэшами (\) замените их на временный символ (например, |), найдите последний разделитель, затем вернитесь к исходной строке.

Почему ПСТР возвращает #ЗНАЧ!, если начальная позиция корректна?

Причины могут быть скрыты:

  • В тексте есть невидимые символы (например, CHAR(160) — неразрывный пробел). Используйте =КОДСИМВ(ПСТР(A1;1;1)) для диагностики.
  • Ячейка содержит ошибку (например, #Н/Д), а не текст. Проверьте с помощью =ЕТЕКСТ(A1).
  • Третий аргумент (количество_символов) отрицательный.
Можно ли использовать ПСТР для извлечения данных из ячеек с формулами?

Да, но учитывайте два момента:

  1. Если ячейка содержит формулу, ПСТР увидит её результат, а не саму формулу. Например, если в A1 формула =СЕГОДНЯ(), то =ПСТР(A1;1;4) вернёт первые 4 символа текущей даты (например, "20.0").
  2. Если результат формулы — ошибка (например, #ДЕЛ/0!), ПСТР вернёт эту ошибку. Оберните в ЕСЛИОШИБКА.
Как применить ПСТР ко всем ячейкам столбца, если длина подстроки разная?

Используйте динамическое определение длины с помощью ПОИСК или ДЛСТР. Пример для извлечения текста до первого пробела:

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

Для обработки всего столбца:

  1. Введите формулу в первую ячейку.
  2. Дважды кликните по маркеру заполнения (маленький квадратик в правом нижнем углу ячейки).
Есть ли альтернатива ПСТР в Power Query?

В Power Query (инструмент Данные → Получить данные) аналогом ПСТР служат функции:

  • Text.Middle — прямой аналог ПСТР.
  • Text.BeforeDelimiter/Text.AfterDelimiter — для извлечения текста до/после разделителя.
  • Text.BetweenDelimiters — для текста между двумя разделителями.

Пример на языке M:

Text.Middle([Column1], 5, 3)  // Извлекает 3 символа, начиная с 6-го