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

Работа с большими таблицами в Microsoft Excel часто требует очистки данных от ненужных записей. Одна из самых распространённых задач — удаление строк, где в определённой колонке встречается конкретное значение: пустая ячейка, ошибка #Н/Д, повторяющийся текст или число. Например, вам нужно убрать все строки с статусом "Отменён", удалить дубликаты email или исключить записи с нулевыми продажами.

На первый взгляд задача простая, но в зависимости от версии Excel (2010, 2016, 2019, 365 или Excel Online), объёма данных и их структуры подходы могут кардинально отличаться. Где-то хватит стандартного фильтра, а где-то потребуется Power Query или даже макрос на VBA. В этой статье разберём все актуальные способы — от элементарных до продвинутых, — а также расскажем, как избежать типичных ошибок при удалении строк.

Если вы никогда не работали с фильтрацией или формулами в Excel, не переживайте: первые два метода подойдут даже новичкам. Опытным пользователям будут полезны разделы про условное форматирование и Power Query — они экономят часы при обработке десятков тысяч строк. А для тех, кто любит автоматизацию, мы подготовили готовые скрипты на VBA с пояснениями.

1. Самый простой способ: удаление через фильтр

Этот метод подходит для 90% случаев, когда нужно быстро удалить строки с одинаковым значением в одном столбце. Его главный плюс — не требуется знание формул или программирования. Минус: если данные отсортированы не по тому столбцу, по которому вы фильтруете, после удаления порядок строк может нарушиться.

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

  1. Выделите диапазон данных (включая заголовки столбцов).
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Нажмите на стрелку фильтра в столбце, где нужно искать значение.
  4. Снимите галочку с (Выделить всё), затем отметьте только те значения, которые хотите оставить.
  5. Нажмите OK — отобразятся только нужные строки.
  6. Выделите видимые строки (кликните на номера строк слева), затем правой кнопкой → Удалить строки.
  7. Снимите фильтр (нажмите Фильтр ещё раз).

⚠️ Внимание: Если в вашей таблице есть объединённые ячейки, фильтр может работать некорректно. В этом случае сначала разъедините ячейки (ГлавнаяОбъединить и поместить в центре → отменить объединение), а потом применяйте фильтр.

Выделил заголовки столбцов

Проверил, нет ли объединённых ячеек

Убедился, что фильтр применён к нужному столбцу

Скопировал данные на резервный лист (на всякий случай)-->

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

2. Удаление с помощью функции "Найти и выделить"

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

Пошаговая инструкция:

  1. Выделите столбец, в котором нужно искать значение (например, столбец B с названиями городов).
  2. Нажмите Ctrl+F (или ГлавнаяНайти и выделитьНайти).
  3. В поле Найти введите искомое значение (например, "Москва").
  4. Нажмите Найти все — внизу появится список всех ячеек с этим значением.
  5. Нажмите Ctrl+A, чтобы выделить все найденные ячейки, затем закройте окно поиска.
  6. Кликните правой кнопкой по выделенному и выберите Удалить строки.

⚠️ Внимание: Если в таблице есть скрытые строки, инструмент Найти их проигнорирует. Чтобы этого избежать, сначала раскройте все строки: выделите весь лист (Ctrl+A) → правая кнопка → Показать.

Преимущество этого метода в том, что вы видите точные адреса ячеек с искомым значением. Это полезно, если нужно удалить строки только при совпадении в нескольких столбцах (например, "Москва" в столбце Город и "Отменён" в столбце Статус).

Фильтр

Найти и выделить

Формулы (ПРОСМОТР, ФИЛЬТР и др.)

Power Query

VBA-макросы

Другой вариант-->

3. Продвинутый метод: формулы + удаление

Когда нужно удалить строки по нескольким условиям или по частичному совпадению (например, все email с доменом @gmail.com), на помощь приходят формулы. Этот способ требует немного больше усилий, но даёт максимальную гибкость.

Самый надёжный вариант — использовать функцию ФИЛЬТРExcel 365 и Excel 2021) или комбинацию ЕСЛИ + ПОИСКПОЗ (для старых версий). Рассмотрим оба подхода.

3.1. Способ для Excel 365/2021: функция ФИЛЬТР

Допустим, у вас таблица с данными в диапазоне A1:D100, и нужно удалить строки, где в столбце B (название товара) есть слово "уценка". Введите эту формулу на новом листе:

=ФИЛЬТР(A2:D100; (ПОИСК("уценка"; B2:B100)=0); "Нет данных")

Формула вернёт все строки, кроме тех, где в столбце B есть слово "уценка". После этого можно скопировать отфильтрованные данные и вставить их поверх оригинальной таблицы.

3.2. Способ для Excel 2010–2019: вспомогательный столбец

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

=ЕСЛИ(C2=""; "Удалить"; "Оставить")

Затем отфильтруйте таблицу по этому столбцу, оставив только строки с меткой "Оставить", и скопируйте их на новый лист.

⚠️ Внимание: Если в вашей таблице есть формулы с относительными ссылками (например, =A1+B1), после удаления строк они могут сбиться. Чтобы этого избежать, предварительно преобразуйте формулы в значения: выделите диапазон → КопироватьСпециальная вставкаЗначения.

=ЕСЛИ(И(A2="Да"; B2<100); "Удалить"; "Оставить")
-->

4. Power Query: удаление строк без формул

Power Query (или Get & Transform в Excel 2016+) — это инструмент для обработки больших массивов данных. Он идеален, когда нужно удалить строки по сложным критериям или очистить данные перед анализом.

Как это работает:

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

Преимущества Power Query:

  • 🔄 Работает с миллионами строк без замедлений.
  • 📊 Сохраняет историю преобразований — можно вернуть исходные данные.
  • 🔗 Поддерживает связь с источником: при обновлении данных в оригинальной таблице фильтрация применяется автоматически.

⚠️ Внимание: Если ваша таблица содержит объединённые ячейки или сложные формулы, Power Query может некорректно их интерпретировать. В этом случае сначала преобразуйте данные в простой формат (разъедините ячейки, замените формулы на значения).

Что делать, если Power Query не видит ваши данные?

Если при импорте таблицы Power Query показывает пустые ячейки или ошибки, проверьте:

1. Нет ли в данных скрытых символов (пробелов, табуляций). Используйте функцию =ПЕЧСИМВ(A1), чтобы их обнаружить.

2. Правильно ли определены типы данных (текст, число, дата). В Power Query нажмите на заголовок столбца → выберите нужный тип.

3. Нет ли в таблице пустых строк или столбцов — они могут разрывать диапазон. Удалите их перед импортом.

5. Автоматизация: удаление строк через VBA

Если вам регулярно приходится удалять строки по одним и тем же критериям, имеет смысл написать макрос на VBA. Это сэкономит время и исключит ошибки при ручной обработке.

Пример макроса, который удаляет строки с пустыми ячейками в столбце C:

Sub УдалитьПустыеСтроки()

Dim rng As Range

Dim row As Range

Dim i As Long

' Указываем диапазон данных (например, A1:C1000)

Set rng = Range("A1:C1000")

' Проходим по строкам с конца в начало (чтобы не сбивались индексы)

For i = rng.Rows.Count To 1 Step -1

If IsEmpty(rng.Cells(i, 3).Value) Then ' Проверяем столбец C

rng.Rows(i).Delete

End If

Next i

End Sub

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

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

Модификации для других задач:

  • 🔍 Чтобы удалять строки с конкретным текстом (например, "Устарело"), замените строку If IsEmpty... на:
    If rng.Cells(i, 3).Value = "Устарело" Then
  • 📊 Чтобы удалять по нескольким столбцам, добавьте дополнительные условия с OR:
    If IsEmpty(rng.Cells(i, 3).Value) Or rng.Cells(i, 2).Value = "Тест" Then

⚠️ Внимание: Перед запуском макроса обязательно сохраните резервную копию файла. Ошибка в коде может привести к потере данных. Также убедитесь, что макросы разрешены в настройках безопасности (ФайлПараметрыЦентр управления безопасностьюПараметры центра...Настройка макросов).

6. Особенности работы с большими таблицами

Если ваша таблица содержит более 100 000 строк, стандартные методы (фильтр, Найти и выделить) могут работать медленно или вообще зависать. В этом случае рекомендуем:

Оптимальные способы для больших данных:

Метод Макс. строк Скорость Сложность
Фильтр до 50 000 Средняя Низкая
Power Query 1 000 000+ Высокая Средняя
VBA 1 000 000+ Очень высокая Высокая
Формулы (ФИЛЬТР) до 300 000 Низкая Средняя

💡 Советы для ускорения:

  • 📥 Разбейте данные на несколько файлов по 50 000 строк.
  • 🔄 Отключите автоматический пересчёт формул: ФормулыПараметры вычисленийВручную.
  • 💾 Сохраните файл в формате .xlsb (двоичный формат Excel) — он работает быстрее, чем .xlsx.

Если даже Power Query работает слишком медленно, попробуйте импортировать данные в Microsoft Access и выполнить фильтрацию там. Access лучше оптимизирован для работы с большими базами данных.

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

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

🔴 Ошибка 1: Сбились формулы после удаления строк

Причина: В таблице использовались относительные ссылки (например, =A1+B1), которые автоматически сдвигаются при удалении строк.

Решение: Перед удалением преобразуйте формулы в значения (КопироватьСпециальная вставкаЗначения) или используйте абсолютные ссылки (например, =$A$1+B1).

🔴 Ошибка 2: Удалились не те строки

Причина: Фильтр был применён не к тому столбцу или неверно задан критерий (например, искали "Москва", а в ячейке был пробел "Москва ").

Решение: Используйте функцию =СЖПРОБЕЛЫ(A1), чтобы убрать лишние пробелы, или =ПРОПНАЧ(A1) для приведения текста к единому регистру.

🔴 Ошибка 3: Завис Excel при удалении

Причина: Слишком большой объём данных или включённый автоматический пересчёт формул.

Решение: Отключите пересчёт (ФормулыВручную) и разбейте задачу на части (удалите по 10 000 строк за раз).

🔴 Ошибка 4: После удаления строки "скачут"

Причина: В таблице есть скрытые строки или объединённые ячейки, которые сбивают нумерацию.

Решение: Перед удалением раскройте все строки (ГлавнаяФорматСкрыть/отобразитьОтобразить строки) и разъедините ячейки.

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

Можно ли отменить удаление строк в Excel?

Да, но только если вы не сохраняли файл после удаления. Нажмите Ctrl+Z или кнопку Отменить на панели быстрого доступа. Если файл был сохранён, попробуйте восстановить предыдущую версию через ФайлСведенияУправление книгойВосстановить несохранённую книгу (работает, если включено автосохранение).

Как удалить строки с ошибками (#Н/Д, #ЗНАЧ! и др.)?

Используйте фильтр по столбцу с ошибками:

  1. Примените фильтр к столбцу.
  2. В выпадающем списке снимите галочку с (Пусто) и (Ошибки).
  3. Скопируйте видимые строки на новый лист.

Или используйте функцию =ЕОШИБКА(A1) во вспомогательном столбце, чтобы пометить строки с ошибками.

Как удалить строки с дубликатами?

Выделите таблицу → ДанныеУдалить дубликаты. В появившемся окне отметьте столбцы, по которым нужно искать дубли (например, только по столбцу Email). Excel оставит первое вхождение и удалит остальные.

⚠️ Внимание: Если в таблице нет заголовков, снимите галочку Мои данные содержат заголовки, иначе первая строка будет проигнорирована.

Можно ли удалить строки по условию в Google Таблицах?

Да, алгоритм похож на Excel:

  1. Примените фильтр (ДанныеСоздать фильтр).
  2. Отфильтруйте данные по нужному критерию.
  3. Выделите видимые строки → правая кнопка → Удалить строки 1–X.

Для автоматизации используйте Google Apps Script (аналог VBA).

Как удалить строки, где значение в ячейке меньше/больше определённого числа?

Используйте фильтр по числовому критерию:

  1. Примените фильтр к столбцу с числами.
  2. В выпадающем меню выберите Числовые фильтрыБольше чем или Меньше чем.
  3. Введите пороговое значение (например, 100) и нажмите OK.
  4. Удалите видимые строки (это будут строки, которые не соответствуют вашему условию).

Для сложных условий (например, "больше 100, но меньше 500") используйте Пользовательский фильтр.