Как вырезать часть текста из ячейки в Excel с помощью ПСТР
Функция ПСТР (в английской версии — MID) извлекает фрагмент текста из ячейки, начиная с указанной позиции и заданной длины. Это основной инструмент для парсинга строк, разделения ФИО, выделения кодов из артикулов или доменов из ссылок без использования макросов. Формула работает по принципу: «найди точку старта, отсчитай нужное количество символов и верни результат».
Синтаксис и базовые принципы работы
Функция принимает три обязательных аргумента:
=ПСТР(текст; начальная_позиция; количество_символов)
Где:
- текст — ссылка на ячейку (например,
A2) или текстовая строка в кавычках. - начальная_позиция — номер символа, с которого начинается извлечение. Отсчет всегда идет с 1.
- количество_символов — длина возвращаемой подстроки.
Если вы укажете длину больше, чем осталось символов до конца строки, функция просто вернет текст до конца ячейки, не выдавая ошибку.
Простые примеры:
- Извлечь 3 символа, начиная с 5-го:
=ПСТР(A2; 5; 3) - Получить первый символ строки:
=ПСТР(A2; 1; 1)(аналог функции ЛЕВСИМВ).
Динамическое извлечение: работа с разделителями
Главная сила ПСТР раскрывается в связке с функциями НАЙТИ (ищет точное совпадение с учетом регистра) или ПОИСК (игнорирует регистр). Это позволяет вытаскивать данные, даже если их положение в строке меняется.
Извлечение текста между скобками
Задача: получить код города из строки Телефон: +7 (495) 123-45-67.
Логика формулы: найти открывающую скобку, сдвинуться на 1 знак вправо, затем посчитать расстояние до закрывающей скобки.
=ПСТР(A2; НАЙТИ("("; A2) + 1; НАЙТИ(")"; A2) - НАЙТИ("("; A2) - 1)
Разбор аргументов:
- Старт:
НАЙТИ("("; A2) + 1— позиция сразу после скобки. - Длина:
Позиция_конца - Позиция_начала. Мы вычитаем позицию открывающей скобки из позиции закрывающей и убираем еще 1, чтобы не захватить саму скобку.
Выделение домена из URL
Задача: из https://site.com/page получить site.com.
Здесь нужно найти протокол ://, пропустить его (3 символа) и брать текст до следующего слэша /.
=ПСТР(A2; НАЙТИ("://"; A2) + 3; НАЙТИ("/"; A2; НАЙТИ("://"; A2) + 3) - НАЙТИ("://"; A2) - 3)
Функция НАЙТИ чувствительна к регистру. Если в данных возможны варианты написания (например, Id: и ID:), используйте функцию ПОИСК, которая игнорирует регистр букв.
Обработка ошибок и защита формул
При работе с реальными данными часто встречаются строки, где нужный разделитель отсутствует. В таком случае функции НАЙТИ/ПОИСК вернут ошибку #ЗНАЧ!, и вся формула сломается.
Чтобы избежать этого, оборачивайте конструкцию в ЕСЛИОШИБКА:
=ЕСЛИОШИБКА(ПСТР(A2; НАЙТИ("("; A2) + 1; ...); "Нет данных")
Если разделитель не найден, формула вернет текст «Нет данных» вместо кода ошибки.
Практические кейсы обработки данных
| Задача | Исходные данные | Формула | Результат |
|---|---|---|---|
| Фамилия из полного имени | Иванов Иван Петрович | =ПСТР(A2; 1; НАЙТИ(" "; A2) - 1) | Иванов |
| Имя из полного имени | Иванов Иван Петрович | =ПСТР(A2; НАЙТИ(" "; A2) + 1; НАЙТИ(" "; A2; НАЙТИ(" "; A2)+1) - НАЙТИ(" "; A2) - 1) | Иван |
| Текст после двоеточия | Артикул: AX-500-Red | =ПСТР(A2; ПОИСК(": "; A2) + 2; ДЛСТР(A2)) | AX-500-Red |
| Первые 4 цифры года | Дата: 2026-04-10 | =ПСТР(A2; 7; 4) | 2026 |
Для разделения текста по простому разделителю (запятая, пробел) в новых версиях Excel (365, 2021) удобнее использовать функцию ТЕКСТРАЗД (TEXTSPLIT), но ПСТР остается незаменимой для сложных условий и старых версий программы.
Частые ошибки при использовании
- Отсчет с нуля. В Excel нумерация символов начинается с 1, а не с 0. Указание
0в аргументе позиции приведет к ошибке#ЗНАЧ!. - Лишние пробелы. Если вы извлекаете текст после разделителя, не забудьте добавить
+1к позиции найденного символа, иначе результат начнется с самого разделителя (пробела или запятой). - Несоответствие локали. В русской версии Excel аргументы разделяются точкой с запятой (
;), в английской — запятой (,). При копировании формул из интернета проверяйте разделители.
Часто задаваемые вопросы (FAQ)
Чем ПСТР отличается от ЛЕВСИМВ и ПРАВСИМВ? ЛЕВСИМВ берет текст строго с начала строки, ПРАВСИМВ — с конца. ПСТР универсальна: она может начать извлечение с любой середины строки.
Как извлечь текст до конца строки, не зная её точной длины?
В аргументе «количество символов» укажите очень большое число (например, 999) или используйте функцию ДЛСТР(ячейка) - позиция_старта + 1. Функция автоматически обрежет результат по фактическому концу текста.
Можно ли использовать ПСТР с числами?
Да, но результат всегда будет текстовым. Если вам нужно дальше производить математические операции с извлеченным фрагментом, оберните формулу в функцию ЗНАЧЕН() или умножьте результат на 1 (например, =ПСТР(...)*1).