Функция MID в Excel: извлекаем текст по номерам позиций

Microsoft Excel предлагает десятки функций для работы с текстом, но одна из самых востребованных — MID (в русской версии — ПСТР). Она позволяет «вырезать» фрагмент из строки по заданным координатам, что незаменимо при обработке больших массивов данных: парсинге логов, разделении ФИО, извлечении кодов из артикулов и многом другом. Однако многие пользователи либо не знают о её существовании, либо используют неэффективно.

В этой статье мы разберём MID «под микроскопом»: от синтаксиса и базовых примеров до продвинутых техник с вложенными функциями. Вы узнаете, как избежать типичных ошибок (например, #ЗНАЧ! при неверных аргументах), чем MID отличается от LEFT/RIGHT, и как автоматизировать извлечение данных с помощью Power Query. А для тех, кто работает с кириллицей — отдельный раздел про кодировки и «подводные камни» с многобайтовыми символами.

Что такое функция MID в Excel и зачем она нужна

Функция MID (англ. middle — «середина») возвращает заданное количество символов из текстовой строки, начиная с указанной позиции. Это инструмент для точного извлечения подстрок по числовым координатам, без привязки к разделителям (в отличие от TEXTSPLIT или Разделить текст по столбцам).

Классические сценарии применения:

  • 📌 Извлечение кода продукта из артикула (например, первые 3 символа — категория, следующие 4 — модель).
  • 📌 Разделение полного ФИО на отдельные столбцы (фамилия, имя, отчество) при фиксированной структуре.
  • 📌 Парсинг лог-файлов, где данные записаны в формате [Дата] [Уровень] Сообщение.
  • 📌 Обработка экспортных файлов из 1С или CRM, где поля «склеены» в одну ячейку.

Главное преимущество MID — предсказуемость. В отличие от функций вроде FIND (которая ищет подстроку по содержимому), здесь вы точно указываете откуда и сколько символов нужно вернуть. Это критично для автоматизации: если структура данных стабильна, формула будет работать без сбоев.

📊 Как часто вы используете текстовые функции в Excel?
Ежедневно
Несколько раз в неделю
Редико
Никогда

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

Формула MID имеет три обязательных аргумента (в скобках указаны названия для русской версии Excel):

MID(text, start_num, num_chars)

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

Разберём каждый параметр с примерами:

Аргумент Описание Пример Типичная ошибка
text
(текст)
Исходная строка или ссылка на ячейку с текстом. MID("Привет", 2, 3) → "рив" Указание числа вместо текста (вернёт #ЗНАЧ!).
start_num
(начальная_позиция)
Номер символа, с которого начинается извлечение (начиная с 1). MID("Excel", 3, 2) → "ce" Значение ≤ 0 (вернёт #ЗНАЧ!).
num_chars
(число_знаков)
Количество извлекаемых символов. MID("2026", 1, 2) → "20" Отрицательное число (вернёт #ЗНАЧ!).

Важно: MID всегда возвращает текст, даже если извлекает цифры. Чтобы преобразовать результат в число, используйте VALUE или умножьте на 1:

=VALUE(MID("123abc", 1, 3))  → 123

=MID("123abc", 1, 3)*1 → 123

Практические примеры использования MID

Рассмотрим реальные кейсы, где MID экономит часы ручной работы.

Пример 1: Разделение артикулов

Допустим, у вас есть артикулы товара в формате CAT-MDL-001, где:

  • 📦 CAT — категория (первые 3 символа);
  • 📦 MDL — модель (символы 5-7);
  • 📦 001 — номер (последние 3 символа).

Формулы для извлечения:

=MID(A1, 1, 3)   → "CAT"  (категория)

=MID(A1, 5, 3) → "MDL" (модель)

=MID(A1, 9, 3) → "001" (номер)

Пример 2: Извлечение домена из email

Если в ячейке A1 лежит адрес user@example.com, а вам нужен только домен:

=MID(A1, FIND("@", A1)+1, LEN(A1))  → "example.com"

Здесь FIND находит позицию @, а MID извлекает всё после неё.

Пример 3: Обработка дат в логах

Лог-файл содержит строки вида [2026-05-15 14:30] Ошибка подключения. Чтобы вытащить дату:

=MID(A1, 2, 10)  → "2026-05-15"

Убедитесь, что структура данных стабильна|Проверьте наличие пробелов или скрытых символов|Тестируйте формулу на 2-3 примерах|Используйте LEN для динамического подсчёта длины-->

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

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

⚠️ Внимание: Если start_num превышает длину строки, MID вернёт пустую строку (""), а не ошибку. Это может остаться незамеченным в больших таблицах!

Ошибка #1: Неучёт многобайтовых символов

В кириллических текстах символы занимают 2 байта, поэтому MID может «резать» их неправильно. Например:

=MID("Привет", 2, 1)  → "?" (вместо "р")

Решение: используйте МПСТР (для многобайтовых строк) или преобразуйте текст в Unicode.

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

Если количество извлекаемых символов варьируется, фиксированное num_chars не подойдёт. Например, для извлечения имени из ФИО "Иванов Петр Сидорович" нужно:

=MID(A1, FIND(" ", A1)+1, FIND(" ", A1, FIND(" ", A1)+1) - FIND(" ", A1)-1)

→ "Петр"

Ошибка #3: Пустые ячейки

Если в text пусто, MID вернёт "", но вложенные функции (например, FIND) могут выдать #ЗНАЧ!. Оберните формулу в IFERROR:

=IFERROR(MID(A1, 1, 3), "")
Почему MID возвращает #ИМЯ?

Ошибка #ИМЯ! появляется, если:

1. Опечатка в названии функции (например, MIDD вместо MID).

2. Используется русская версия Excel, но введена английская функция (нужно ПСТР).

3. Отсутствует закрывающая скобка.

Альтернативы MID: когда лучше использовать другие функции

MID не всегда оптимальна. В некоторых случаях удобнее:

Функция Когда использовать Пример
LEFT (ЛЕВСИМВ) Нужны первые N символов. LEFT("Excel", 3) → "Exc"
RIGHT (ПРАВСИМВ) Нужны последние N символов. RIGHT("Excel", 2) → "el"
TEXTBEFORE/TEXTAFTER (Excel 365) Извлечение по разделителю (не по позициям). TEXTAFTER("user@example.com", "@") → "example.com"
FLASH FILL (Быстрое заполнение) Для неструктурированных данных с ручным образцом. Введите первый результат вручную → Ctrl+E.

Комбинация MID + FIND часто заменяется на TEXTSPLIT (в новых версиях Excel), но у последней есть ограничение: она требует явного разделителя. Если структура данных жёстко фиксирована (например, всегда 5-й символ начинает код продукта), MID надёжнее.

Продвинутые техники: MID с массивами и Power Query

Для обработки тысяч строк MID можно интегрировать с другими инструментами.

1. Извлечение нескольких подстрок за один шаг

Если нужно получить несколько фрагментов из одной строки, используйте формулу массива (вводится через Ctrl+Shift+Enter в старых версиях):

{=MID(A1, {1,5,9}, {3,3,3})}

Вернёт массив из трёх значений (например, для "CAT-MDL-001"{"CAT","MDL","001"}).

2. Автоматизация с Power Query

Для больших datasets эффективнее использовать Power Query:

  1. Выделите данные → Данные → Из таблицы/диапазона.
  2. В редакторе Power Query добавьте столбец с формулой:
= Text.Middle([Column1], 0, 3)

Где 0 — начальная позиция (в Power Query отсчёт с 0), 3 — длина.

3. MID в VBA

В макросах синтаксис аналогичен:

Sub ExtractText()

Dim str As String

str = "Example"

MsgBox Mid(str, 3, 2) ' Вернёт "am"

End Sub

MID и кириллица: особенности работы с русским текстом

При работе с кириллицей MID может вести себя неожиданно из-за кодировки Unicode. Например:

=MID("Привет", 2, 1)  → "?" (вместо "р")

Проблема в том, что русские буквы занимают 2 байта, а MID оперирует байтами, а не символами. Решения:

  • 🔄 Используйте МПСТР (для многобайтовых строк): =МПСТР("Привет", 2, 1) → "р".
  • 🔄 Преобразуйте текст в Unicode с помощью UNICODE + CHAR.
  • 🔄 В Power Query используйте Text.Middle — она корректно обрабатывает Unicode.

Для проверки длины строки с учётом кириллицы используйте:

=LENB("Привет")  → 12 (байт)

=LEN("Привет") → 6 (символов)

=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;" ";" "); 2*нач_позиция-1; 2*число_знаков))

где нач_позиция и число_знаков — количество символов (не байт).-->

FAQ: Ответы на частые вопросы

Можно ли использовать MID для извлечения чисел из текста?

Да, но результат будет текстом. Чтобы преобразовать его в число, оберните MID в VALUE или умножьте на 1:

=VALUE(MID("А123Б", 2, 3))  → 123

Если в строке есть нецифровые символы (например, "1,23"), используйте SUBSTITUTE для их удаления:

=VALUE(SUBSTITUTE(MID(A1, 1, 4), ",", "."))
Как извлечь текст между двумя символами (например, скобками)?

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

=MID(A1; FIND("("; A1)+1; FIND(")"; A1)-FIND("("; A1)-1)

Для A1 = "Пример (текст) здесь" вернёт "текст".

Почему MID возвращает ошибку #ЗНАЧ!?

Причины и решения:

  • 🔹 start_num ≤ 0 → исправьте на положительное число.
  • 🔹 num_chars отрицательное → укажите положительное значение.
  • 🔹 В text передано не текстовое значение → оберните в TEXT:
=MID(TEXT(123); 1; 2)  → "12"
Как применить MID ко всему столбцу без протягивания формулы?

Способы:

  1. Выделите диапазон → введите формулу → нажмите Ctrl+Enter.
  2. Используйте Power Query (описано выше).
  3. В Excel 365 используйте динамические массивы:
=MID(A1:A100; 2; 3)

Формула автоматически заполнит весь диапазон.

Есть ли аналог MID в Google Sheets?

Да, в Google Таблицах функция называется MID (или СРЗНАЧ в русской версии) и имеет тот же синтаксис:

=MID("Google Sheets"; 8; 5)  → "Sheets"

Отличия:

  • 🔹 Поддерживает кириллицу без дополнительных функций.
  • 🔹 Можно использовать в APPS SCRIPT для автоматизации.