Работа с большими таблицами в Microsoft Excel часто требует очистки данных от ненужных записей. Одна из самых распространённых задач — удаление строк, содержащих конкретное слово или фразу. Например, вам нужно исключить из отчёта все записи с пометкой "устарело", удалить дубликаты с определённым артикулом или очистить базу клиентов от неактуальных контактов.
В этой статье мы разберём 5 проверенных методов: от простых (с использованием стандартных фильтров) до продвинутых (с применением формул массива и VBA-макросов). Каждый способ подходит для разных версий Excel (2010–2023, Office 365) и типов данных — текста, чисел или комбинаций. Вы также узнаете, как избежать типичных ошибок при удалении и сохранить структуру таблицы.
Если вы никогда не работали с фильтрами или макросами — не переживайте. Мы подробно объясним каждый шаг с визуальными примерами и предупреждениями о возможных подводных камнях. Для опытных пользователей приготовили оптимизированные решения, которые сэкономят время при обработке десятков тысяч строк.
1. Удаление строк через стандартный фильтр
Самый простой и безопасный способ — использовать встроенный фильтр Excel. Он не требует знания формул и подходит для таблиц любого размера. Алгоритм работает даже в Excel 2010, но особенно удобен в новых версиях благодаря улучшенному интерфейсу.
Как это сделать:
- Выделите диапазон данных (включая заголовки столбцов).
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Нажмите на стрелку фильтра в столбце, где нужно искать слово, и выберите
Текстовые фильтры→Содержит.... - Введите искомое слово (например, "тест") и нажмите
ОК. - Excel отобразит только строки с этим словом. Выделите их, кликните правой кнопкой и выберите
Удалить строку. - Снимите фильтр, нажав
Данные→Фильтрещё раз.
✅ Плюсы метода: не требует формул, обратимый (можно отменить Ctrl+Z), работает с любыми данными.
❌ Минусы: при большом количестве строк фильтрация может занять время. Также метод не подходит, если слово может быть частью другого (например, "тест" найдёт и "тестирование").
2. Использование функции "Найти и выделить"
Если вам нужно удалить строки с точным вхождением слова (без частичных совпадений), используйте инструмент Найти и выделить. Это быстрее, чем фильтр, когда слово уникально и не входит в состав других фраз.
Пошаговая инструкция:
- Выделите диапазон данных (например,
A1:D1000). - Нажмите
Ctrl+Fили перейдите на вкладкуГлавная→Найти и выделить→Найти. - В поле
Найтивведите искомое слово (например, "черновик"). - Нажмите
Найти все— Excel покажет список всех ячеек с этим словом. - Зажмите
Ctrlи кликните по каждому результату в списке, чтобы выделить строки. - Закройте окно поиска, кликните правой кнопкой по любой выделенной строке и выберите
Удалить.
Важно: этот метод выделяет только ячейки, а не целые строки. Чтобы удалить строки, после выделения ячеек нажмите
По умолчанию Excel ищет с учётом регистра. Чтобы найти слово независимо от заглавных букв, в окне Ctrl+Shift+→ (выделить строку целиком) перед удалением.
Что делать, если слово в разных регистрах?
Найти нажмите Параметры → снимите галочку Учитывать регистр.
3. Удаление строк с помощью вспомогательного столбца и формул
Для сложных условий (например, когда слово может быть в любом из нескольких столбцов) используйте вспомогательный столбец с формулами. Этот метод гибкий и позволяет комбинировать несколько критериев.
Пример: удалим строки, где в любом из столбцов A, B или C встречается слово "отмена".
- Добавьте новый столбец (например,
E) и в первой ячейке (E2) введите формулу:=ИЛИ(ЕНД(A2;"отмена"); ЕНД(B2;"отмена"); ЕНД(C2;"отмена"))Здесь
ЕНД(англ.ISNUMBER+SEARCH) проверяет наличие подстроки. - Растяните формулу на все строки (двойной клик по маркеру автозаполнения).
- Отфильтруйте таблицу по столбцу
E, оставив только строки со значениемИСТИНА. - Удалите отфильтрованные строки и удалите вспомогательный столбец.
🔹 Альтернативная формула для точного совпадения (без частичных вхождений):
=ИЛИ(A2="отмена"; B2="отмена"; C2="отмена")
| Формула | Что ищет | Пример совпадения |
|---|---|---|
=ЕНД(A2;"текст") | Слово как часть текста | "это текст пример" |
=A2="текст" | Точное совпадение | только "текст" |
=ПОИСК("текст";A2) | Чувствительна к регистру | "Текст" ≠ "текст" |
4. Автоматизация с помощью VBA-макроса
Если вам нужно регулярно очищать таблицы от строк с определёнными словами, напишите VBA-макрос. Это сэкономит время и исключит ручные ошибки. Макрос ниже удаляет строки, где в любом столбце встречается заданное слово.
Как запустить макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - В меню выберите
Insert→Module. - Вставьте код:
Sub DeleteRowsWithWord()Dim ws As Worksheet
Dim rng As Range, cell As Range
Dim searchWord As String
Dim i As Long
Set ws = ActiveSheet
searchWord = InputBox("Введите слово для поиска:", "Удаление строк")
If searchWord = "" Then Exit Sub
Set rng = ws.UsedRange
For i = rng.Rows.Count To 1 Step -1
For Each cell In rng.Rows(i).Cells
If InStr(1, cell.Value, searchWord, vbTextCompare) > 0 Then
rng.Rows(i).Delete
Exit For
End If
Next cell
Next i
MsgBox "Готово! Удалено строк: " & (rng.Rows.Count - i), vbInformation
End Sub
- Закройте редактор и запустите макрос через
Alt+F8→DeleteRowsWithWord→Выполнить.
⚠️
⚠️ Внимание: Макрос удаляет строки без возможности отмены (Ctrl+Z не работает). Перед запуском сохраните копию файла или протестируйте на небольшом диапазоне.
Сохранить резервную копию файла
Проверить диапазон данных (UsedRange)
Убедиться, что слово введено правильно
Отключить обновление экрана (Application.ScreenUpdating = False) для ускорения-->
5. Удаление строк с учётом регистра и частичных совпадений
Иногда требуется удалить строки только при полном совпадении слова (например, "Да" не должно затрагивать "Дата"). Для этого модифицируем подход со вспомогательным столбцом или макросом.
Способ 1. Формула для точного совпадения:
=ИЛИ(A2=D1; B2=D1; C2=D1)
где D1 — ячейка с искомым словом (например, "отмена").
Способ 2. VBA с учётом регистра:
Замените в макросе строку:
If InStr(1, cell.Value, searchWord, vbTextCompare) > 0 Then
на:
If cell.Value = searchWord Then
🔹 Для частичных совпадений без учёта регистра используйте:
If LCase(cell.Value) Like "" & LCase(searchWord) & "" Then
6. Особенности работы с большими таблицами (100 000+ строк)
При обработке объёмных данных (от 50 000 строк) стандартные методы могут тормозить или выдавать ошибки. Вот как оптимизировать процесс:
Проблемы и решения:
- 🐢 Медленная фильтрация: используйте Power Query (вкладка
Данные→Из таблицы/диапазона). В редакторе примените фильтр по столбцу и удалите ненужные строки перед загрузкой обратно в Excel. - ⚠️ Ошибка "Недостаточно памяти": разбейте таблицу на части (по 20 000 строк) и обрабатывайте каждую отдельно.
- ⚡ Ускорение макроса: добавьте в начало кода:
Application.ScreenUpdating = FalseApplication.Calculation = xlCalculationManual
и в конец:
Application.Calculation = xlCalculationAutomatic
⚠️
⚠️ Внимание: В таблицах свыше 100 000 строк Ctrl+Z (отмена) может не работать после массового удаления. Всегда сохраняйте резервную копию перед началом.
Частые ошибки и как их избежать
Даже опытные пользователи допускают ошибки при удалении строк. Вот самые распространённые и способы их предотвращения:
Ошибка 1. Удаление не тех строк
- 🔍 Причина: слово является частью другого (например, поиск "кат" находит "категория" и "скатерть").
- 🛠 Решение: используйте точные формулы (
=A2="кат") или регулярные выражения в VBA.
Ошибка 2. Сдвиг данных после удаления
- 🔍 Причина: при удалении строк в цикле VBA без обратного порядка (от последней к первой) пропускаются строки.
- 🛠 Решение: всегда используйте конструкцию
For i = LastRow To 1 Step -1.
Ошибка 3. Потеря форматирования
- 🔍 Причина: при копировании данных после фильтрации теряются цвета, формулы или условное форматирование.
- 🛠 Решение: перед удалением скопируйте форматирование (например, через
Специальная вставка→Форматы).
FAQ: Ответы на популярные вопросы
Можно ли удалить строки по нескольким словам одновременно?
Да. Используйте формулу с ИЛИ для каждого слова:
=ИЛИ(ЕНД(A2;"слово1"); ЕНД(A2;"слово2"); ЕНД(B2;"слово3"))
Или модифицируйте VBA-макрос, добавив массив слов:
Dim searchWords(1 To 3) As String
searchWords(1) = "слово1"
searchWords(2) = "слово2"
searchWords(3) = "слово3"
Как удалить строки, где слово НЕ встречается?
Инвертируйте условие фильтра или формулы. Например:
=НЕ(ЕНД(A2;"нужное_слово"))
Затем отфильтруйте по ИСТИНА и удалите строки.
Почему после удаления строки сдвигаются некорректно?
Это происходит, если в таблице есть объединённые ячейки или скрытые строки. Перед удалением:
- Убедитесь, что нет объединённых ячеек (
Главная→Объединить и поместить в центре). - Покажите все скрытые строки (
Главная→Формат→Отобразить).
Как удалить строки в Google Таблицах?
Алгоритм аналогичен Excel, но с нюансами:
- Используйте
Данные→Создать фильтр. - Для формул замените
ЕНДна=REGEXMATCH(A2; "слово"). - Макросы пишутся на Google Apps Script (JavaScript).
Можно ли вернуть удалённые строки?
Если вы не сохраняли файл после удаления, закройте Excel без сохранения и откройте заново. В противном случае:
- Проверьте версии файла (
Файл→Сведения→Управление версиейв Excel 365). - Восстановите из автосохранённого файла (папка
C:\Users\Имя_пользователя\AppData\Roaming\Microsoft\Excel\).