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

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

Работа с большими таблицами в Microsoft Excel часто требует очистки данных от ненужных записей. Например, вам нужно удалить все строки, где в столбце Статус стоит значение «Отменён», или исключить пустые ячейки в столбце Телефон. Вручную это делать неэффективно — особенно если строк тысячи. К сожалению, простое выделение и удаление строк (ПКМ → Удалить) не учитывает содержимое ячеек, а значит, не решает задачу.

В этой статье разберём 7 способов удаления строк по условию — от базовых (фильтры и сортировка) до продвинутых (формулы, Power Query, VBA). Каждый метод подходит для разных сценариев: одни быстрее, другие точнее, третьи автоматизируют процесс. Выбирайте подходящий в зависимости от объёма данных и ваших навыков работы с Excel.

⚠️ Важно: перед массовым удалением строк всегда дублируйте исходную таблицу (например, на отдельный лист). Это защитит от потери данных при ошибке в условии. В Excel 365 для этого достаточно перетащить лист с зажатой клавишей Ctrl.

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

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

Как это сделать:

  • 📌 Выделите заголовок столбца, по которому будете фильтровать (например, Категория).
  • 🔍 Нажмите Данные → Фильтр (или сочетание Ctrl+Shift+L).
  • 🖱️ Кликните по стрелочке в заголовке столбца и выберите значение для удаления (например, «Неактуально»).
  • ✂️ Выделите все отфильтрованные строки (кроме заголовка!), нажмите ПКМ → Удалить строки с листа.
  • 🔄 Снимите фильтр кнопкой Фильтр в меню Данные.

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

Выделить заголовок столбца с данными|Включить фильтр (Ctrl+Shift+L)|Отметить галочкой значение для удаления|Выделить все видимые строки (кроме заголовка)|Удалить строки (ПКМ → Удалить)|Отключить фильтр-->

Способ 2: Удаление с помощью сортировки (для небольших таблиц)

Сортировка полезна, когда нужно удалить строки с пустыми ячейками или дубликатами. Метод работает быстрее фильтра, если значения для удаления сгруппированы. Например, все строки со статусом «Архив» идут подряд.

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

  1. Выделите всю таблицу (включая заголовки).
  2. Нажмите Данные → Сортировка (или Главная → Сортировка и фильтр → Настраиваемая сортировка).
  3. В окне сортировки выберите столбец, по которому будете упорядочивать данные (например, Статус).
  4. Укажите порядок: по возрастанию или убыванию (чтобы нужные строки оказались вверху или внизу).
  5. После сортировки выделите группу строк с ненужными значениями и удалите их (ПКМ → Удалить).

💡 Совет: если нужно удалить пустые строки, отсортируйте таблицу по любому столбцу — пустые ячейки окажутся в конце. Затем выделите их и удалите.

Способ 3: Удаление через вспомогательный столбец с формулой

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

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

  1. Добавьте справа от таблицы вспомогательный столбец (например, Удалить?).
  2. В первую ячейку столбца введите формулу, которая вернёт ИСТИНА для строк, которые нужно удалить. Примеры:
    • Для удаления строк со значением «Отменён» в столбце B: =B2="Отменён"
    • Для удаления строк с пустыми ячейками в столбце C: =C2=""
    • Для удаления строк, где в столбце D значение меньше 100: =D2<100
  • Растяните формулу на все строки таблицы.
  • Отфильтруйте таблицу по вспомогательному столбцу, оставив только строки с ИСТИНА.
  • Удалите отфильтрованные строки и удалите вспомогательный столбец.
  • 📊 Пример комбинированного условия: удалить строки, где в столбце A значение «Да», а в столбце B — меньше 50. Формула будет такой:

    =И(A2="Да"; B2<50)
    Как удалить строки по частичному совпадению?

    Используйте функцию ПОИСК или НАЙТИ. Например, чтобы удалить все строки, где в столбце C есть слово "тест" (в любом регистре), введите:

    =НЕ(ЕОШИБКА(ПОИСК("тест"; C2)))

    Эта формула вернёт ИСТИНА для всех ячеек, содержащих подстроку "тест".

    Способ 4: Удаление с помощью функции ФИЛЬТР (Excel 365 и 2021)

    В новых версиях Excel (начиная с Excel 365 и Excel 2021) появилась динамическая функция ФИЛЬТР, которая позволяет отобразить только нужные строки без их физического удаления. Это удобно, если вы не хотите менять исходные данные.

    Синтаксис функции:

    =ФИЛЬТР(диапазон; условие1; [условие2]; ...)

    Примеры использования:

    • 📋 Отобразить все строки, кроме тех, где в столбце B значение «Отменён»:
      =ФИЛЬТР(A2:D100; B2:B100<>"Отменён")
    • 🔍 Отфильтровать строки, где в столбце C значение больше 100 и в столбце D не пусто:
      =ФИЛЬТР(A2:E100; (C2:C100>100)*(D2:D100<>""))

    ⚠️ Внимание: функция ФИЛЬТР возвращает динамический массив, который обновляется при изменении исходных данных. Если вам нужно физически удалить строки, скопируйте результат функции и вставьте как значения (ПКМ → Специальная вставка → Значения).

    📊 Какой версией Excel вы пользуетесь?
    Excel 2010–2019
    Excel 2021
    Excel 365 (подписка)
    Excel для Mac
    Другая

    Способ 5: Удаление через Power Query (для больших таблиц)

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

    Инструкция по удалению строк через Power Query:

    1. Выделите вашу таблицу и нажмите Данные → Из таблицы/диапазона (в группе Получить и преобразовать данные).
    2. В открывшемся редакторе Power Query найдите столбец, по которому будете фильтровать.
    3. Кликните по стрелочке в заголовке столбца и снимите галочку с значения, которое нужно удалить (например, «Неактуально»). Нажмите ОК.
    4. Нажмите Главная → Закрыть и загрузить, чтобы вернуть отфильтрованные данные на новый лист.

    🔄 Преимущество метода: оригинальная таблица остаётся нетронутой, а отфильтрованные данные загружаются на отдельный лист. При необходимости вы можете обновить запрос (Данные → Обновить все), если исходные данные изменились.

    Метод Подходит для версий Сложность Макс. строк Сохраняет оригинал?
    Фильтр Excel 2010–2023 1 млн+ Нет
    Сортировка Excel 2010–2023 1 млн+ Нет
    Вспомогательный столбец Excel 2010–2023 ⭐⭐ 1 млн+ Да (если копировать)
    Функция ФИЛЬТР Excel 365, 2021 ⭐⭐ 1 млн+ Да
    Power Query Excel 2016–2023 ⭐⭐⭐ 10 млн+ Да

    Способ 6: Удаление через VBA (для автоматизации)

    Если вам часто приходится удалять строки по одним и тем же критериям, имеет смысл написать макрос на VBA. Это сэкономит время и исключит ошибки при ручном удалении. Например, макрос может удалять все строки с пустыми ячейками в столбце E или со значением «Удалён» в столбце F.

    Пример кода для удаления строк со значением «Отменён» в столбце B:

    Sub УдалитьСтрокиПоЗначению()
    

    Dim ws As Worksheet

    Dim rng As Range, cell As Range

    Dim i As Long

    ' Указываем лист (замените "Лист1" на имя вашего листа)

    Set ws = ThisWorkbook.Sheets("Лист1")

    ' Определяем последний ряд с данными в столбце B

    i = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

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

    For i = i To 2 Step -1

    If ws.Cells(i, "B").Value = "Отменён" Then

    ws.Rows(i).Delete

    End If

    Next i

    End Sub

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

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

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

    Способ 7: Удаление дубликатов (специальный случай)

    Если ваша задача — удалить повторяющиеся строки, в Excel есть встроенная функция. Она работает по одному или нескольким столбцам. Например, можно удалить дубликаты по столбцу Email или по комбинации ФИО + Телефон.

    Как удалить дубликаты:

    1. Выделите диапазон данных (включая заголовки).
    2. Нажмите Данные → Удалить дубликаты.
    3. В окне выберите столбцы, по которым нужно искать повторения. Например, отметьте Email и Номер телефона.
    4. Нажмите ОКExcel удалит все повторяющиеся строки, оставив только первые вхождения.

    🔍 Нюанс: функция удаляет полные дубликаты строк. Если вам нужно удалить строки, где повторяется только одно значение (например, Имя, но остальные данные разные), используйте способ 3 (вспомогательный столбец с формулой СЧЁТЕСЛИ).

    Пример формулы для поиска дубликатов в столбце A:

    =ЕСЛИ(СЧЁТЕСЛИ($A$2:$A$100; A2)>1; "Дубликат"; "")

    Частые ошибки и как их избежать

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

    1. Удалились не те строки.
      🔹 Причина: неверно указан диапазон в фильтре или формуле.
      🔹 Решение: всегда проверяйте, какие строки выделены перед удалением. Используйте F5 → Выделить видимые ячейки, если работаете с фильтром.
    2. Excel «завис» при удалении большого количества строк.
      🔹 Причина: обработка тысяч строк требует ресурсов.
      🔹 Решение: разбейте задачу на части (удалите по 500–1000 строк за раз) или используйте Power Query.
    3. После удаления сбилась нумерация строк.
      🔹 Причина: в таблице использовались абсолютные ссылки (например, =A1 вместо =A2).
      🔹 Решение: замените ссылки на относительные или используйте ИНДЕКС/ПОИСКПОЗ для динамических ссылок.
    4. Фильтр не находит нужные значения.
      🔹 Причина: в данных есть скрытые символы (пробелы, переносы строк).
      🔹 Решение: очистите данные функцией СЖПРОБЕЛЫ или ПЕЧСИМВ.

    Критическая ошибка: если в таблице есть объединённые ячейки, большинство методов (фильтр, сортировка, VBA) будут работать некорректно или выдадут ошибку. Перед удалением строк обязательно разъедините ячейки (Главная → Объединить и поместить в центре).

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

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

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

    Как удалить строки, где ячейка содержит часть текста (например, "тест")?

    Используйте вспомогательный столбец с формулой =ЕСЛИ(ЕЧИСЛО(ПОИСК("тест"; A2)); "Удалить"; ""), затем отфильтруйте по слову "Удалить" и удалите строки. Или примените Power Query: в редакторе выберите столбец → Трансформировать → Разделить столбец → По разделителю (указываете символы для поиска).

    Почему после удаления строк формулы возвращают ошибку #ССЫЛКА?

    Это происходит, если в формулах использовались абсолютные ссылки на удалённые строки (например, =A5, а строка 5 была удалена). Замените ссылки на динамические (например, =ИНДЕКС(A:A; СТРОКА())) или пересчитайте формулы после удаления.

    Как удалить строки в защищённом листе Excel?

    Снимите защиту листа: Рецензирование → Снять защиту листа (потребуется пароль, если он был установлен). Если пароль неизвестен, используйте VBA для снятия защиты (требуются права администратора). Пример кода:

    ActiveSheet.Unprotect Password:="ваш_пароль"

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

    Да, методы аналогичны Excel:

    • Фильтр: Данные → Создать фильтр.
    • Формула: используйте =FILTER(A2:D100; B2:B100<>"Удалить").
    • Скрипты: аналог VBAИнструменты → Редактор скриптов (язык Google Apps Script).