Как вырезать часть текста в Excel: от простых функций до автоматизации

Почему стандартные инструменты Excel не всегда справляются с обрезкой текста

Работа с текстовыми данными в Microsoft Excel часто требует не просто редактирования, а точечного извлечения фрагментов: удаления лишних символов, разделения ФИО на компоненты или выделения кода из строки. Вручную это занимает часы, особенно если речь идёт о тысячах строк. К сожалению, многие пользователи ограничиваются функцией НАЙТИ И ЗАМЕНИТЬ (Ctrl+H), которая бессильна, когда нужно вырезать текст по динамическим условиям — например, оставить только цифры после последнего пробела или удалить все символы до определённого разделителя.

В этой статье мы разберём 7 методов обрезки текста — от базовых функций ЛЕВСИМВ/ПРАВСИМВ до продвинутых инструментов вроде Power Query и VBA. Вы узнаете, как:

  • 🔹 Вырезать фиксированное количество символов с начала/конца строки
  • 🔹 Извлечь текст между двумя разделителями (например, скобками или тире)
  • 🔹 Автоматически удалить лишние пробелы, переносы и непечатаемые символы
  • 🔹 Разделить ячейку на части по заданному шаблону (например, ФИО → фамилия, имя, отчество)

Особое внимание уделим распространённой ошибке: почему функция ПСТР возвращает #ЗНАЧ! даже при корректных аргументах и как это исправить без переписывания формулы.

Метод 1: Функции ЛЕВСИМВ, ПРАВСИМВ и ПСТР — базовые инструменты

Если вам нужно вырезать фиксированное количество символов с начала, конца или середины строки, эти три функции станут вашей первой линией обороны. Их синтаксис прост:

  • 📌 =ЛЕВСИМВ(текст; количество) — возвращает заданное число символов слева.
  • 📌 =ПРАВСИМВ(текст; количество) — то же, но справа.
  • 📌 =ПСТР(текст; начальная_позиция; количество) — извлекает фрагмент с заданной позиции.

Пример: чтобы из строки "Инв. №АБВ-12345" извлечь только номер "АБВ-12345", используйте:

=ПРАВСИМВ(A1; 8)

Где 8 — количество символов с конца. А если нужно оставить только префикс "Инв. №":

=ЛЕВСИМВ(A1; 6)
⚠️ Внимание: Функция ПСТР вернёт ошибку #ЗНАЧ!, если начальная_позиция больше длины текста. Чтобы избежать этого, оберните её в ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(ПСТР(A1; 10; 5); "")

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

-->

Метод 2: Вырезка текста по разделителю (ПОИСК + ПСТР)

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

Допустим, у вас есть строка "Товар (Код: XYZ-789)", и нужно вырезать "XYZ-789". Формула:

=ПСТР(A1; ПОИСК("Код: "; A1)+5; ПОИСК(")"; A1)-ПОИСК("Код: "; A1)-5)

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

  1. ПОИСК("Код: "; A1) — находит позицию начала искомого фрагмента.
  2. +5 — сдвиг на длину самого слова "Код: " (5 символов).
  3. ПОИСК(")"; A1) — позиция закрывающей скобки.
  4. -ПОИСК("Код: "; A1)-5 — вычисляет длину фрагмента между скобками.
Исходный текст Формула Результат
"Заказ #12345 от 01.01.2023" =ПСТР(A1;ПОИСК("#";A1)+1;5) 12345
"Email: user@example.com" =ПРАВСИМВ(A1;ДЛСТР(A1)-ПОИСК("@";A1)) example.com
"Иванов Иван Иванович" =ПСТР(A1;ПОИСК(" ";A1)+1;ПОИСК(" ";A1;ПОИСК(" ";A1)+1)-ПОИСК(" ";A1)-1) Иван

Метод 3: Текст по столбцам — разделитель как ножницы

Если текст в ячейке имеет чёткую структуру с разделителями (запятые, точки с запятой, табуляции), инструмент Текст по столбцам (Данные → Текст по столбцам) сэкономит вам часы. Он автоматически разобьёт строку на части по выбранному символу.

Пример: у вас есть ячейка с данными "Смирнов;Пётр;Сергеевич;1985". Чтобы разделить её на 4 столбца:

  1. Выделите ячейку(и) с текстом.
  2. Перейдите в Данные → Текст по столбцам.
  3. Выберите С разделителями → укажите символ ;.
  4. Нажмите Готово.

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

⚠️ Внимание: Если в тексте есть несколько подряд идущих разделителей (например, "Иванов,,Петр"), Excel создаст пустые столбцы. Чтобы их убрать, после разделения примените фильтр и удалите пустые значения.

Как разделить текст по нескольким разделителям одновременно?

Используйте Power Query (см. Метод 5) или замените все разделители на один символ с помощью НАЙТИ И ЗАМЕНИТЬ (Ctrl+H). Например, замените ; и , на |, а затем разделите текст по |.

Метод 4: Удаление лишних символов (ПЕЧСИМВ, СЖПРОБЕЛЫ, ПОДСТАВИТЬ)

Иногда проблема не в извлечении, а в очистке текста от мусора: лишних пробелов, неразрывных пробелов (Char(160)), переносов строк (Char(10)) или непечатаемых символов. Для этого есть специализированные функции:

  • 🧹 =СЖПРОБЕЛЫ(текст) — убирает лишние пробелы между словами.
  • 🧹 =ПОДСТАВИТЬ(текст; старый_символ; новый_символ; [номер_вхождения]) — заменяет конкретные символы.
  • 🧹 =ПЕЧСИМВ(текст) — удаляет все непечатаемые символы (включая табуляции и переносы).

Пример: очистка строки " Иванов Иван Иванович ":

=СЖПРОБЕЛЫ(A1)

Результат: "Иванов Иван Иванович".

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

=ПОДСТАВИТЬ(A1; СИМВОЛ(160); " ")

СЖПРОБЕЛЫ|ПОДСТАВИТЬ|ПЕЧСИМВ|Текст по столбцам|Другой-->

Метод 5: Power Query — автоматизация для больших данных

Если вам нужно обработать тысячи строк с сложной логикой обрезки (например, извлечь email из хаотичного текста или разделить адрес на улицу, дом, квартиру), Power Query станет вашим спасением. Этот инструмент позволяет:

  • 🔧 Разбивать текст по нескольким разделителям одновременно.
  • 🔧 Применять условную логику (например, "вырезать текст после @ только если он содержит точку").
  • 🔧 Сохранять шаги обработки для повторного использования.

Пример: извлечение домена из email ("user@example.com" → "example.com"):

  1. Выделите данные → Данные → Из таблицы/диапазона (откроется Power Query).
  2. Выберите столбец с email → Преобразовать → Разделить столбец → По разделителю.
  3. Укажите разделитель @ и выберите Разделить на строки.
  4. Удалите первый столбец (с "user"), оставьте второй.
  5. Нажмите Закрыть и загрузить.

Метод 6: VBA-макросы для сложных задач

Когда стандартные функции бессильны (например, нужно вырезать текст по регулярному выражению или обработать данные в цикле), на помощь приходит VBA. Ниже макрос, который удаляет все символы до последнего пробела в выделенных ячейках:

Sub УдалитьДоПоследнегоПробела()

Dim rng As Range

Dim cell As Range

Dim lastSpace As Integer

Set rng = Selection

For Each cell In rng

lastSpace = InStrRev(cell.Value, " ")

If lastSpace > 0 Then

cell.Value = Right(cell.Value, Len(cell.Value) - lastSpace)

End If

Next cell

End Sub

Как использовать:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите ячейки с текстом → запустите макрос (F5).

Для более сложных задач (например, извлечение текста по шаблону "[А-я]+") подключите библиотеку Regular Expressions:

' Добавляем ссылку на Microsoft VBScript Regular Expressions 5.5

' (Tools → References в редакторе VBA)

Function ИзвлечьПоШаблону(текст As String, шаблон As String) As String

Dim regEx As New RegExp

regEx.Pattern = шаблон

regEx.Global = True

If regEx.Test(текст) Then

ИзвлечьПоШаблону = regEx.Execute(текст)(0)

Else

ИзвлечьПоШаблону = ""

End If

End Function

Теперь в Excel можно использовать =ИзвлечьПоШаблону(A1; "[А-я]+") для извлечения кириллических слов.

Метод 7: Формулы массива и LET (Excel 365)

В последних версиях Excel 365 появились динамические массивы и функция LET, которые позволяют создавать многоступенчатые вычисления без промежуточных столбцов. Например, чтобы извлечь все числа из строки "Заказ 123 на сумму 456 руб.":

=ТЕКСТПОСЛЕ(ПОДСТАВИТЬ(A1; {"0";"1";"2";"3";"4";"5";"6";"7";"8";"9"}; ""); 0)

Но более элегантное решение с LET:

=LET(

текст; A1;

цифры; ФИЛЬТР(ПОСИМВ(текст); ЕЧИСЛО(ПОСИМВ(текст)*1));

ТЕКСТСОЕДИНИТЬ(цифры; "")

)

Эта формула:

  1. Разбивает текст на символы (ПОСИМВ).
  2. Фильтрует только цифры (ЕЧИСЛО).
  3. Объединяет их обратно в строку (ТЕКСТСОЕДИНИТЬ).
⚠️ Внимание: Формулы массива в Excel 365 автоматически "проливаются" на соседние ячейки. Если вам нужно ограничить вывод, используйте @ перед формулой (например, =@ФИЛЬТР(...)).

FAQ: Частые вопросы по обрезке текста в Excel

Как вырезать текст до/после определённого символа?

Используйте комбинацию ЛЕВСИМВ/ПРАВСИМВ с ПОИСК. Например, чтобы оставить текст после последнего дефиса в строке "АБВ-123-456":

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

Здесь мы заменяем последний дефис на уникальный символ "▲", чтобы найти его позицию.

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

Ошибка возникает в трёх случаях:

  1. Начальная позиция больше длины текста (проверьте ДЛСТР(A1)).
  2. В тексте есть непечатаемые символы (используйте ПЕЧСИМВ или СИМВОЛ(10) для их обнаружения).
  3. Ячейка содержит ошибку (например, #Н/Д). Оберните в ЕСЛИОШИБКА.
Как разделить ФИО на три отдельные ячейки?

Если ФИО записано как "Иванов Иван Петрович", используйте:

  • 👉 Фамилия: =ЛЕВСИМВ(A1; ПОИСК(" "; A1)-1)
  • 👉 Имя: =ПСТР(A1; ПОИСК(" "; A1)+1; ПОИСК(" "; A1; ПОИСК(" "; A1)+1)-ПОИСК(" "; A1)-1)
  • 👉 Отчество: =ПРАВСИМВ(A1; ДЛСТР(A1)-ПОИСК(" "; A1; ПОИСК(" "; A1)+1))

Для надёжности оберните каждую формулу в ЕСЛИОШИБКА.

Можно ли вырезать текст без формул?

Да, есть три способа:

  1. Текст по столбцам (см. Метод 3).
  2. Найти и заменить (Ctrl+H) — если нужно удалить все вхождения определённого фрагмента.
  3. Флеш-заполнение (Данные → Флеш-заполнение) — если Excel detects pattern (например, в столбце "user@example.com" вы вводите example.com в соседней ячейке, а затем применяете флеш-заполнение).
Как извлечь текст между двумя одинаковыми разделителями?

Если разделители одинаковые (например, "текст [нужное] текст"), используйте:

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

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

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