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

Почему стандартное вычитание не работает с текстом

Вы когда-нибудь пытались просто взять и отнять одно слово от другого в Microsoft Excel, как числа? Если да, то наверняка столкнулись с ошибкой #VALUE! — программа просто не понимает, что делать с текстовыми данными в арифметических операциях. И это логично: для Excel "яблоко" минус "груша" — такая же бессмыслица, как попытка разделить банан на скорость света.

Но что, если вам нужно удалить конкретное слово из сотен ячеек? Или извлечь только часть текста, исключив лишние фрагменты? Например, у вас есть список "Красное яблоко", "Зелёное яблоко", "Жёлтый банан", и требуется оставить только цвета. Здесь уже не обойтись без специальных инструментов — и их в Excel целых пять! От простейших функций до автоматизации через VBA.

В этой статье разберём все методы — от самых доступных для новичков до продвинутых для опытных пользователей. А ещё вы узнаете, почему иногда формулы не работают (спойлер: виноваты пробелы и регистр) и как обработать тысячи строк за пару кликов.

Метод 1: Функция ЗАМЕНИТЬ (SUBSTITUTE) — самый простой способ

Если вам нужно удалить одно конкретное слово из текста (и вы знаете его точное написание), функция ЗАМЕНИТЬ (SUBSTITUTE в английской версии) — ваш лучший друг. Она ищет указанный фрагмент и заменяет его на пустоту.

Формула выглядит так:

=ЗАМЕНИТЬ(A1; "слово"; "")

Где:

  • 📌 A1 — ячейка с исходным текстом
  • 🔍 "слово" — то, что нужно удалить (с учётом регистра!)
  • 🗑️ "" — на что заменить (пустая строка = удаление)

Пример: если в ячейке A1 написано "Срочно купить молоко", то формула =ЗАМЕНИТЬ(A1; "молоко"; "") вернёт "Срочно купить ". Обратите внимание на лишний пробел — его придётся убирать отдельно (об этом ниже).

⚠️ Внимание: Функция ЗАМЕНИТЬ удаляет все вхождения слова. Если в тексте "яблоко яблоко", после обработки останется пустота. Чтобы удалить только первое вхождение, добавьте четвёртый аргумент: =ЗАМЕНИТЬ(A1; "яблоко"; ""; 1).
Исходный текст Формула Результат
Красное яблоко =ЗАМЕНИТЬ(A1; "яблоко"; "") Красное
Срочно! Купить хлеб и молоко =ЗАМЕНИТЬ(A1; "молоко"; "") Срочно! Купить хлеб и
Документ_версия1_final_исправлено =ЗАМЕНИТЬ(A1; "_"; " ") Документ версия1 final исправлено

Метод 2: Комбинация ЛЕВСИМВ + ПРАВСИМВ + ПОИСК — для удаления первого/последнего слова

Что делать, если нужно удалить первое слово в ячейке, но вы не знаете, какое оно? Или последнее? Здесь поможет trio функций:

  • 🔠 ЛЕВСИМВ (LEFT) — возвращает заданное количество символов с начала строки
  • 🔚 ПРАВСИМВ (RIGHT) — то же, но с конца
  • 🔍 ПОИСК (FIND) — находит позицию пробела (разделителя слов)

Формула для удаления первого слова:

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

Разберём на примере текста "Яблоко зелёное большое":

  1. ПОИСК(" "; A1) находит первый пробел на 7-й позиции.
  2. ДЛСТР(A1) возвращает общую длину строки (19 символов).
  3. 19 - 7 = 12 — столько символов нужно взять с конца.
  4. ПРАВСИМВ возвращает "зелёное большое".

Убедитесь, что в тексте есть пробелы между словами|Проверьте отсутствие лишних пробелов в начале/конце|Если слов больше двух, формула удалит только первое|Для удаления последнего слова используйте ЛЕВСИМВ + ПОИСК с конца (ПОИСК(" ";A1;ПОИСК(" ";A1)-1))

-->

Аналогично работает удаление последнего слова, но там логика чуть сложнее из-за необходимости найти последний пробел. Подробности — в спойлере.

Формула для удаления последнего слова

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

=ЛЕВСИМВ(A1; ПОИСК("♠"; ЗАМЕНИТЬ(A1; " "; "♠"; ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1; " "; ""))))-1)

Здесь мы заменяем последний пробел на символ "♠" (можно любой редкий), затем находим его позицию и обрезаем строку до неё. Не забывайте вычитать 1, чтобы убрать сам пробел!

Метод 3: Power Query — обработка тысяч строк без формул

Если у вас большой объём данных (тысячи строк) или нужно удалять слова по сложным правилам (например, все слова короче 3 символов), Power Query спасёт вас от рутины. Этот инструмент встроен в Excel 2016+ и позволяет обрабатывать данные как в SQL — с фильтрацией, разделением и преобразованием.

Алгоритм действий:

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

Преимущества метода:

  • ⚡ Обрабатывает миллионы строк без тормозов
  • 🔄 Можно сохранить шаги и обновлять данные автоматически
  • 🛠️ Гибкие настройки (удалить слова по маске, длине, регистру и т.д.)

Формулы (ЗАМЕНИТЬ, ЛЕВСИМВ и др.)|Power Query|VBA-макросы|Ручная правка|Другой способ-->

⚠️ Внимание: При разделении текста по пробелам Power Query создаёт новые столбцы для каждого слова. Если в исходных данных разное количество слов, часть ячеек останется пустой. Чтобы избежать хаоса, предварительно проверьте данные на однородность или используйте Заменить значения для удаления конкретных слов.

Метод 4: Регулярные выражения через VBA — для продвинутых

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

Function RemoveShortWords(rng As Range) As String

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

With regex

.Pattern = "\b\w{1,3}\b" ' Шаблон: слова от 1 до 3 символов

.Global = True

End With

RemoveShortWords = regex.Replace(rng.Value, "")

End Function

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код выше в модуль (Insert → Module).
  3. В Excel используйте формулу как обычную: =RemoveShortWords(A1).

Другие полезные шаблоны для regex:

  • 🔢 Удалить все цифры: \d+
  • 💰 Удалить слова с "$" или "€": \S*[\$\€]\S*
  • 📛 Удалить слова в квадратных скобках: \[[^\]]+\]

Метод 5: Текст по столбцам + фильтрация — для визуальной обработки

Если формулы и код пугают, а данных не слишком много, можно обойтись встроенными инструментами Excel:

  1. Выделите колонку с текстом → Данные → Текст по столбцам.
  2. Выберите "С разделителями" → укажите пробел как разделитель.
  3. Нажмите Готово — каждое слово окажется в отдельной колонке.
  4. Удалите ненужные столбцы (слова) → объедините оставшиеся через =СЦЕПИТЬ или CONCAT.

Плюсы метода:

  • 👀 Визуальный контроль — вы видите, что удаляете
  • 🔄 Легко исправить ошибки (в отличие от формул)
  • 📊 Подходит для одноразовых задач с небольшим объёмом данных

Минусы:

  • ⏳ Дольше, чем формулы или Power Query
  • 🚫 Не подходит для автоматизации (придётся повторять вручную)

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

Даже с простыми формулами пользователи сталкиваются с проблемами. Вот топ-5 ошибок и их решения:

Ошибка Причина Решение
#ЗНАЧ! (#VALUE!) Ячейка содержит ошибку или не текст Проверьте данные на пустые ячейки или ошибки. Используйте ЕСЛИОШИБКА
Слово не удаляется Не совпадает регистр или есть лишние пробелы Используйте СЖПРОБЕЛЫ и СТРОЧН для нормализации текста
Удаляется не то слово В тексте есть часть слова (например, "бан" в "банан") Добавьте пробелы в шаблон: ЗАМЕНИТЬ(A1; " бан "; "")
Формула работает медленно Слишком много вложенных функций или большие данные Переключитесь на Power Query или VBA
Лишние пробелы после удаления Функция ЗАМЕНИТЬ не убирает пробелы автоматически Оберните формулу в СЖПРОБЕЛЫ: =СЖПРОБЕЛЫ(ЗАМЕНИТЬ(A1; "слово"; ""))

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

FAQ: Частые вопросы по вычитанию слов в Excel

Можно ли удалить слово по частичному совпадению? Например, все слова, содержащие "привет"?

Да, но стандартными функциями это сложно. Варианты:

  1. Используйте ЗАМЕНИТЬ с подстановочными символами (но в Excel они работают только в Power Query или VBA):
  2. =ЗАМЕНИТЬ(A1; "привет"; "")

    В обычных формулах это не сработает — нужна VBA с регулярными выражениями.

  3. Для Power Query используйте фильтр по условию "содержит" и удалите ненужные строки.
Как удалить все слова, кроме одного? Например, оставить только фамилию в ФИО.

Если формат данных строгий (например, всегда "Иванов Иван Иванович"), используйте комбинацию ЛЕВСИМВ + ПОИСК:

=ЛЕВСИМВ(A1; ПОИСК(" "; A1) - 1)

Для более сложных случаев (разное количество слов) подойдёт Power Query с разделением по пробелам и выбором нужного столбца.

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

Функция ЗАМЕНИТЬ удаляет только указанный текст, не трогая пробелы. Решения:

  • Оберните формулу в СЖПРОБЕЛЫ:
  • =СЖПРОБЕЛЫ(ЗАМЕНИТЬ(A1; "слово"; ""))
  • Используйте ПОДСТАВИТЬ для замены двойных пробелов на одинарные:
  • =ПОДСТАВИТЬ(ЗАМЕНИТЬ(A1; "слово"; ""); "  "; " ")
Как автоматизировать удаление слов в новых данных?

Если данные обновляются регулярно, настройте:

  1. Power Query: сохраните запрос и обновляйте его по кнопке Данные → Обновить все.
  2. VBA-макрос: запишите макрос для обработки и назначьте его на кнопку или горячие клавиши.
  3. Динамические массивы (Excel 365): используйте формулы с автоматическим заполнением, например:
  4. =СЖПРОБЕЛЫ(ЗАМЕНИТЬ(A1:A100; "слово"; ""))
Работают ли эти методы в Google Sheets?

Да, но с поправками:

  • Функции называются по-английски: =SUBSTITUTE, =LEFT, =FIND.
  • Вместо ПОДСТАВИТЬ используется =REGEXREPLACE для регулярных выражений.
  • Power Query в Google Sheets отсутствует, но есть аналогичный инструмент Apps Script.

Пример для Google Sheets:

=TRIM(SUBSTITUTE(A1; "word"; ""))