Функция PSTR в Excel: полное руководство с примерами и лайфхаками

Работа с текстовыми данными в Microsoft Excel часто требует нестандартных решений, особенно когда речь идет о извлечении подстрок или манипуляциях с символами. Одна из малоизвестных, но крайне полезных функций — PSTR (или её аналоги в разных версиях Excel). Она позволяет гибко управлять текстовыми фрагментами, извлекая части строк по заданным правилам. Если вы когда-либо сталкивались с задачей вытаскивания кусков текста из ячеек по шаблону или разделителям, эта функция станет вашим секретным оружием.

Однако здесь кроется подвох: PSTR не является стандартной функцией в классическом Excel. В зависимости от версии программы и региональных настроек она может называться по-разному или вовсе отсутствовать в списке. Например, в русскоязычных версиях часто встречается функция ПСТР, а в англоязычных — MID. Но суть остается той же: работа с подстроками. В этой статье мы разберем все нюансы — от базового синтаксиса до продвинутых приемов, которые сэкономят вам часы рутинной работы.

Вы узнаете, как:

  • 🔍 Извлекать фрагменты текста по номеру позиции и длине
  • 📝 Комбинировать PSTR с другими функциями (ПОИСК, НАЙТИ, ДЛСТР)
  • ⚡ Автоматизировать обработку больших массивов данных
  • ❌ Избегать типичных ошибок при работе с текстовыми функциями
📊 Какую версию Excel вы используете чаще всего?
Excel 2010-2016
Excel 2019/2021
Excel 365 (онлайн/десктоп)
Mac-версия Excel
Другая

Что такое PSTR и где её искать в Excel

Начнем с главного: PSTR — это сокращение от"подстрока", но в Excel эта функция может скрываться под разными именами. В русскоязычных версиях программы она называется ПСТР (от"подстрока"), в английских — MID (от"middle"). Функция входит в категорию текстовых функций и доступна во всех современных версиях Excel, включая Excel 365, Excel 2021 и Excel для Mac.

Где её найти? Есть три способа:

  1. Ручной ввод: просто начинайте печатать =ПСТР( или =MID( в ячейке — Excel подскажет синтаксис.
  2. Через мастер функций: перейдите на вкладку ФормулыТекстовые → выберите ПСТР.
  3. Поиск: нажмите Shift + F3, введите"подстрока" в поисковой строке.

Функция ПСТР возвращает заданное количество символов из текстовой строки, начиная с указанной позиции. Это как ножницы для текста: вы вырезаете кусок нужной длины с нужного места. Например, если в ячейке лежит текст "Счет №12345 от 01.01.2023", с помощью ПСТР можно извлечь только номер счета (12345) или дату.

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

Синтаксис функции прост, но требует внимания к деталям. Общая формула:

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

Разберем каждый аргумент:

  • 📄 текст — это строка или ссылка на ячейку, из которой извлекается подстрока. Может быть введена в кавычках (например, "Пример") или как ссылка (A1).
  • 📍 начальная_позиция — номер символа, с которого начинается извлечение. Важно: в Excel нумерация символов начинается с 1, а не с 0! Например, в слове"Excel" буква"E" — это позиция 1,"x" — позиция 2.
  • ✂️ количество_символов — сколько символов нужно извлечь. Если указать 0 или отрицательное число, функция вернет ошибку.

Примеры:

Формула Исходный текст Результат Пояснение
=ПСТР("Excel"; 1; 1) "Excel" "E" Извлекает 1 символ, начиная с позиции 1
=ПСТР(A1; 3; 2) В ячейке A1 текст"Привет" "ив" Берет 2 символа, начиная с 3-й позиции
=ПСТР("2023-12-31"; 6; 2) "2023-12-31" "12" Извлекает месяц из даты в текстовом формате

Обратите внимание: если начальная_позиция превышает длину текста, функция вернет пустую строку (""). Если количество_символов больше, чем осталось символов от начальной позиции до конца строки, будут возвращены все символы до конца.

Что будет, если указать дробное число в аргументах?

Excel автоматически округлит дробные значения до целых чисел. Например, =ПСТР("Тест"; 1,5; 2,9) будет интерпретировано как =ПСТР("Тест"; 2; 3) и вернет"ест".

Практические примеры: где ПСТР незаменима

Теория — это хорошо, но настоящая магия начинается, когда функция решает реальные задачи. Вот 5 сценариев, где ПСТР спасает ситуацию:

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

Допустим, в ячейке A1 лежит текст: "Контакт: +7 (912) 345-67-89, email: test@example.com". Чтобы вытащить только номер телефона без кода страны:

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

Формула ищет позиции открывающей и закрывающей скобок, а затем извлекает текст между ними.

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

Если в ячейке B2 записано "Иванов Иван Иванович", то:

  • 👤 Фамилия: =ПСТР(B2; 1; ПОИСК(""; B2)-1)
  • 👤 Имя: =ПСТР(B2; ПОИСК(""; B2)+1; ПОИСК(""; B2; ПОИСК(""; B2)+1)-ПОИСК(""; B2)-1)
  • 👤 Отчество: =ПСТР(B2; ПОИСК(""; B2; ПОИСК(""; B2)+1)+1; 99) (99 — произвольное большое число)

3. Обработка кодов товаров

Предположим, у вас есть артикулы вида "ABC-12345-XYZ", и нужно извлечь числовую часть (12345). Если формат всегда одинаковый:

=ПСТР(A1; 5; 5)

Если длина числовой части варьируется, комбинируйте с ПОИСК:

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

Убедитесь, что текстовые данные не содержат лишних пробелов (используйте СЖПРОБЕЛЫ)

Проверьте единообразие формата (например, разделители всегда одинаковые)

Удалите ненужные символы (ПОДСТАВИТЬ или ЗАМЕНИТЬ)

Преобразуйте числа в текстовый формат, если нужно (ТЕКСТ)

-->

Типичные ошибки и как их избежать

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

⚠️ Внимание: Если функция возвращает #ЗНАЧ!, проверьте, что все аргументы — числа. Например, если начальная_позиция или количество_символов указаны как текст (например, "3" вместо 3), Excel не сможет выполнить вычисление.

Ошибка 1: Неучет пробелов и невидимых символов

Часто текстовые данные содержат скрытые символы (неразрывные пробелы, табуляции, переводы строк). Например, в ячейке может казаться, что текст начинается с 1-го символа, но на самом деле перед ним есть пробел. Решение:

=ПСТР(СЖПРОБЕЛЫ(A1); 1; 5)

Ошибка 2: Динамическая длина подстроки

Если вы фиксируете количество_символов (например, всегда берете 5 символов), но реальная длина нужного фрагмента варьируется, часть данных будет обрезана. Используйте комбинацию с ДЛСТР или ПОИСК, чтобы автоматически определять длину.

Ошибка 3: Региональные настройки

В некоторых локализациях Excel в качестве разделителя аргументов функции используется ;, в других — ,. Если формула не работает, проверьте, какой разделитель используется в вашей версии (можно увидеть в любой другой функции).

Ошибка Причина Решение
#ИМЯ? Опечатка в названии функции Проверьте, правильно ли написано ПСТР (или MID)
#ЗНАЧ! Аргумент не является числом Убедитесь, что начальная_позиция и количество_символов — числа
#ССЫЛКА! Некорректная ссылка на ячейку Проверьте, существует ли ячейка, на которую вы ссылаетесь

ПСТР vs другие текстовые функции: что выбрать

Excel предлагает несколько функций для работы с подстроками. Когда использовать ПСТР, а когда — альтернативы?

ПСТР (MID) идеальна, когда вы знаете:

  • 📌 Точную позицию начала фрагмента
  • 📌 Точную длину фрагмента

Но если эти параметры неизвестны, лучше комбинировать ПСТР с другими функциями или использовать:

ЛЕВСИМВ (LEFT) и ПРАВСИМВ (RIGHT)

Эти функции извлекают заданное количество символов с начала или конца строки соответственно. Пример:

  • 📌 =ЛЕВСИМВ(A1; 3) — первые 3 символа
  • 📌 =ПРАВСИМВ(A1; 4) — последние 4 символа

Подходит, когда нужный фрагмент находится в начале или конце строки.

ПОИСК (FIND) и НАЙТИ (SEARCH)

Эти функции возвращают позицию одного текста внутри другого. Их часто используют вместе с ПСТР для динамического определения начальной позиции. Например:

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

Эта формула извлечет 10 символов после символа @ (полезно для работы с email).

ТЕКСТПОСЛЕ и ТЕКСТДО (TEXTAFTER, TEXTBEFORE)

Новые функции в Excel 365, которые упрощают извлечение текста до или после заданного разделителя. Например:

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

Вернет текст после первого тире в ячейке A1. Эти функции часто заменяют сложные конструкции с ПСТР.

📊 Какую функцию для работы с текстом вы используете чаще?
ПСТР (MID)
ЛЕВСИМВ/ПРАВСИМВ (LEFT/RIGHT)
ПОИСК/НАЙТИ (FIND/SEARCH)
ТЕКСТПОСЛЕ/ТЕКСТДО (TEXTAFTER/TEXTBEFORE)
Другую

Продвинутые приемы: комбинации с ПСТР

Реальная мощь ПСТР проявляется, когда её комбинируют с другими функциями. Вот несколько продвинутых техник:

1. Извлечение всех слов после запятой

Если в ячейке A1 текст "Яблоки, груши, бананы, апельсины", и нужно получить все фрукты кроме первого:

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

2. Разделение текста по нескольким разделителям

Допустим, в ячейке смешаны разделители: "Иванов; Петр; Сидоров, Анна". Чтобы извлечь второе имя:

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

Здесь сначала заменяем все запятые на точку с запятой, а затем работаем с единым разделителем.

3. Извлечение чисел из текста

Если в ячейке смесь текста и чисел (например, "Заказ 12345 на сумму 999 руб."), и нужно вытащить только числа:

=--ПСТР(A1; МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9}; A1);"")); ДЛСТР(A1))

Эта формула находит позицию первой цифры и извлекает всё до конца строки, а затем преобразует результат в число (--).

4. Динамическое извлечение по шаблону

Предположим, у вас есть строки вида "Код: ABC123, Дата: 01.01.2023", и нужно извлечь код. Если позиция кода всегда одинакова относительно слова"Код:", используйте:

=ПСТР(A1; ПОИСК("Код:"; A1)+6; ПОИСК(","; A1)-(ПОИСК("Код:"; A1)+6))
Как извлечь текст между двумя одинаковыми разделителями?

Если у вас строка вида "текст1|нужный текст|текст2" и нужно получить "нужный текст", используйте:

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

Автоматизация с ПСТР: макросы и Power Query

Если вам регулярно приходится обрабатывать большие массивы данных, ручной ввод формул с ПСТР может стать утомительным. В таких случаях помогут:

1. Пользовательские функции на VBA

Создайте собственную функцию для частых операций. Например, функция для извлечения текста между двумя разделителями:

Function ExtractBetweenText(ByVal text As String, ByVal startDelim As String, ByVal endDelim As String) As String

Dim startPos As Integer

Dim endPos As Integer

startPos = InStr(text, startDelim) + Len(startDelim)

endPos = InStr(startPos, text, endDelim)

If startPos > 0 And endPos > 0 Then

ExtractBetweenText = Mid(text, startPos, endPos - startPos)

Else

ExtractBetweenText =""

End If

End Function

Теперь в Excel можно использовать =ExtractBetweenText(A1;"[";"]") для извлечения текста между квадратными скобками.

2. Power Query (Get & Transform)

Инструмент Power Query позволяет автоматизировать обработку текста без формул. Например, чтобы разделить столбец с ФИО на отдельные столбцы:

  1. Выделите столбец → ДанныеИз таблицы/диапазона.
  2. В редакторе Power Query выберите столбец → Разделить столбецПо разделителю.
  3. Укажите разделитель (пробел) и количество разделяемых частей.

Это особенно удобно для больших наборов данных, где формулы могут замедлять работу.

3. Динамические массивы (Excel 365)

В новых версиях Excel можно использовать функции динамических массивов для обработки текстовых данных. Например, чтобы извлечь все слова из ячейки в отдельные строки:

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

А затем применить ПСТР к каждому элементу массива.

FAQ: Ответы на частые вопросы о ПСТР

Можно ли использовать ПСТР для извлечения текста с конца строки?

Прямо — нет, так как ПСТР требует указания начальной позиции. Но можно комбинировать её с ДЛСТР:

=ПСТР(A1; ДЛСТР(A1)-4; 5)

Эта формула извлечет последние 5 символов из ячейки A1 (начиная с позиции ДЛСТР(A1)-4).

Почему ПСТР возвращает ошибку #ЧИСЛО!?

Эта ошибка возникает, если:

  • 📌 начальная_позиция меньше 1
  • 📌 количество_символов отрицательное
  • 📌 Сумма начальная_позиция + количество_символов превышает длину текста (в некоторых версиях Excel)

Проверьте аргументы функции на корректность.

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

Используйте комбинацию ПОИСК и ПСТР. Например, для извлечения текста между "[" и "]":

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

Если разделители могут отсутствовать, добавьте обработку ошибок с ЕСЛИОШИБКА.

Работает ли ПСТР с числами?

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

=ПСТР(ТЕКСТ(A1;"0"); 2; 3)

Или используйте амперсанд для преобразования:

=ПСТР(A1&""; 2; 3)
Можно ли использовать ПСТР в условном форматировании?

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

=ПСТР(A1; 3; 1)="А"

Или для проверки начала строки:

=ПСТР(A1; 1; 4)="http"