Как удалить строки по цвету в Excel: от фильтра до VBA-скриптов

Работа с большими таблицами в Microsoft Excel часто превращается в головоломку, когда нужно быстро очистить данные от ненужных строк. Особенно сложно это сделать, если критерием отбора служит цвет ячейки — стандартные функции сортировки и фильтрации здесь бессильны. Вы когда-нибудь тратили часы на ручное удаление сотен строк, выделенных красным или жёлтым? Или пытались найти способ автоматизировать этот процесс, но натыкались на туманные инструкции с форумов?

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

Почему стандартный фильтр не работает с цветами (и что делать)

Многие пользователи пытаются удалить цветные строки через Фильтр → Фильтр по цвету, но сталкиваются с проблемой: функция просто скрывает строки, не удаляя их физически. Более того, в некоторых версиях Excel (например, 2013) фильтр по цвету ячейки может вообще отсутствовать в меню.

Причина кроется в архитектуре программы: цвет фона (или шрифта) не является данными в привычном смысле — это свойство форматирования. Поэтому стандартные инструменты работы с данными (Удалить дубликаты, Сортировка) его игнорируют. Решить проблему можно тремя путями:

  • 🔍 Добавить вспомогательный столбец с формулой, которая преобразует цвет в текстовый или числовой признак (подходит для небольших таблиц).
  • 🛠️ Использовать VBA — макрос, который сканирует цвет ячеек и удаляет строки (самый универсальный метод).
  • 🔄 Применить Power Query — инструмент для трансформации данных, доступный в Excel 2016+ (требует предварительной настройки).
⚠️ Внимание: Если ваша таблица содержит объединённые ячейки, большинство методов (кроме VBA) работать не будут. Предварительно разъедините ячейки через Главная → Объединить и поместить в центре.

Метод 1: Удаление через фильтр + вспомогательный столбец (без VBA)

Этот способ подходит для пользователей, которые не хотят использовать макросы. Суть в том, чтобы преобразовать цвет в текстовый маркер, а затем отфильтровать и удалить строки стандартными средствами.

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

  1. Добавьте справа от таблицы вспомогательный столбец (например, с заголовком "Цвет").
  2. В первую ячейку столбца введите формулу, которая проверяет цвет соседней ячейки. Для этого используйте функцию GET.CELL (доступна только через Имя → Присвоить):
    =ЕСЛИ(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A2)=1;"Красный";"Другой")
    Примечание: Число 38 — это код цвета фона ячейки. Для других цветов используйте таблицу кодов (см. ниже).
  3. Растяните формулу на все строки таблицы.
  4. Примените Фильтр к вспомогательному столбцу и отфильтруйте строки по нужному цвету.
  5. Выделите видимые строки, кликните правой кнопкой и выберите Удалить строки.
Цвет фонаКод для GET.CELLПример формулы
Красный1=ЕСЛИ(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A2)=1;"Да";"Нет")
Зелёный4=ЕСЛИ(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A2)=4;"Да";"Нет")
Жёлтый6=ЕСЛИ(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A2)=6;"Да";"Нет")
Синий5=ЕСЛИ(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A2)=5;"Да";"Нет")

Главный недостаток метода — ручная настройка для каждого цвета. Если в таблице используются нестандартные оттенки (например, RGB(255, 192, 203)), функция GET.CELL их не распознает.

Добавлен вспомогательный столбец справа от таблицы

Введена формула с GET.CELL для первого цвета

Формула растянута на все строки

Применён фильтр по вспомогательному столбцу

Строки удалены через контекстное меню-->

Метод 2: Макрос VBA для удаления строк по цвету (универсальный способ)

Если вам нужно удалить строки с несколькими цветами или работать с большими таблицами (10 000+ строк), VBA — оптимальное решение. Этот метод не требует добавления вспомогательных столбцов и обрабатывает даже объединённые ячейки.

Инструкция по шагам:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert → Module.
  3. Вставьте следующий код (универсальный для любого цвета):
    Sub DeleteRowsByColor()
    

    Dim rng As Range, cell As Range

    Dim colorToDelete As Long

    Dim i As Long

    ' Задайте цвет для удаления (например, красный RGB = 255, 0, 0)

    colorToDelete = RGB(255, 0, 0)

    ' Укажите диапазон для проверки (например, столбец A)

    Set rng = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)

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

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

    If rng.Cells(i, 1).Interior.Color = colorToDelete Then

    rng.Cells(i, 1).EntireRow.Delete

    End If

    Next i

    End Sub

  4. Измените параметр colorToDelete на нужный цвет (см. таблицу RGB-кодов ниже).
  5. Запустите макрос кнопкой F5.
ЦветRGB-код для VBAПример кода
КрасныйRGB(255, 0, 0)colorToDelete = RGB(255, 0, 0)
ЗелёныйRGB(0, 255, 0)colorToDelete = RGB(0, 255, 0)
СинийRGB(0, 0, 255)colorToDelete = RGB(0, 0, 255)
ЖёлтыйRGB(255, 255, 0)colorToDelete = RGB(255, 255, 0)

Для удаления строк по цвету шрифта (а не фона) замените в коде .Interior.Color на .Font.Color.

⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов), иначе Excel заблокирует выполнение скрипта. Для этого выберите Файл → Сохранить как → Тип файла: Книга Excel с поддержкой макросов (*.xlsm).

Стандартный фильтр + вспомогательный столбец

Макросы VBA

Power Query

Ручное удаление

Другой способ-->

Метод 3: Power Query для удаления строк по цвету (Excel 2016+)

Power Query — мощный инструмент для трансформации данных, доступный в Excel 2016 и новее (в Excel 2010/2013 требуется установка надстройки). Его преимущество — неразрушающая обработка: оригинальные данные остаются нетронутыми, а изменения применяются в отдельной таблице.

Как удалить строки по цвету через Power Query:

  1. Выделите таблицу и перейдите во вкладку Данные → Из таблицы/диапазона (или Get & Transform → Из таблицы в Excel 2016).
  2. В открывшемся редакторе Power Query добавьте условный столбец:
    • Нажмите Добавить столбец → Условный столбец.
    • В поле "Новое имя столбца" введите, например, "ЦветФона".
    • В разделе "Если" выберите столбец, по которому определяется цвет (например, столбец A).
    • В выпадающем меню "Оператор" выберите Цвет фона и укажите нужный цвет.
    • В поле "Значение при истинном условии" введите 1, в "Значение при ложном" — 0.
  • Отфильтруйте строки по новому столбцу: кликните на стрелку в заголовке "ЦветФона" и выберите 0 (или 1, если нужно удалить цветные строки).
  • Нажмите Главная → Закрыть и загрузить, чтобы применить изменения.
  • Минус метода — невозможность удаления в классическом смысле: Power Query создаёт новую таблицу без ненужных строк, а оригинал остаётся на месте. Чтобы полностью удалить данные, придётся вручную скопировать результаты обратно.

    Как узнать точный код цвета в Power Query?

    В редакторе Power Query выделите ячейку с нужным цветом → перейдите во вкладку "Вид" → включите панель "Дополнительно" → в разделе "Цвет фона" будет указан код в формате Hex (например, #FFFF00 для жёлтого).

    Метод 4: Удаление строк по цвету шрифта (отдельный случай)

    Если вам нужно удалить строки не по цвету фона, а по цвету шрифта, большинство методов выше не сработают. Для этого потребуется модифицировать подход:

    • 🔹 Для фильтра + вспомогательного столбца: в формуле GET.CELL используйте код 24 (цвет шрифта) вместо 38 (цвет фона). Пример:
      =ЕСЛИ(ПОЛУЧИТЬ.ЯЧЕЙКУ(24;A2)=255;"Красный текст";"Другой")
      Примечание: 255 — код красного цвета шрифта.
    • 🔹 Для VBA: замените в макросе .Interior.Color на .Font.Color, какmentioned ранее.
    • 🔹 Для Power Query: при создании условного столбца выберите опцию Цвет шрифта вместо Цвет фона.

    Важно учитывать, что цвет шрифта может быть задан не только через стандартную палитру Excel, но и через условное форматирование. В этом случае вышеописанные методы не сработают — потребуется сначала удалить правила условного форматирования (Главная → Условное форматирование → Управление правилами).

    Метод 5: Удаление строк с условным форматированием (продвинутый уровень)

    Если цвет строк задаётся через условное форматирование (например, формулой =A1>100 с красным фоном), стандартные методы удаления не помогут. Здесь нужен обходной путь:

    1. Скопируйте таблицу на новый лист (Ctrl + C → Ctrl + V).
    2. Выделите скопированные данные и нажмите Главная → Формат как таблицу (преобразуйте в "умную таблицу").
    3. Перейдите в Условное форматирование → Управление правилами и удалите все правила для выделенного диапазона.
    4. Теперь цвет станет статичным (не привязанным к формуле), и вы сможете применить любой из методов выше (например, VBA или фильтр).
    ⚠️ Внимание: После удаления правил условного форматирования все динамические цвета пропадут. Если они важны для анализа, сначала сохраните копию файла или экспортируйте данные в PDF через Файл → Экспорт.

    Сравнение методов: какой выбрать?

    Выбор способа удаления строк по цвету зависит от трёх факторов: версии Excel, размера таблицы и типа цвета (статический, условное форматирование, цвет шрифта). Ниже — сравнительная таблица:

    МетодПодходит дляПлюсыМинусыСложность
    Фильтр + вспомогательный столбец Excel 2010–2023, небольшие таблицы Не требует VBA, работает со статичными цветами Нужно знать коды цветов, не удаляет условное форматирование ⭐⭐
    VBA-макрос Любые версии, большие таблицы Универсален, работает с любыми цветами и объединёнными ячейками Требует навыков работы с макросами, нужно сохранять в .xlsm ⭐⭐⭐
    Power Query Excel 2016+, Office 365 Неразрушающий, подходит для сложных трансформаций Не удаляет данные физически, требует загрузки результатов ⭐⭐⭐
    Ручное удаление Таблицы до 100 строк Не требует подготовки Долго, высокий риск ошибки

    Для большинства пользователей оптимальным решением станет сочетание фильтра и VBA: первый — для разовых задач с небольшими таблицами, второй — для регулярной работы с большими наборами данных.

    FAQ: Частые вопросы по удалению строк по цвету

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

    Нет, Excel Online не поддерживает VBA, Power Query и функцию GET.CELL. Единственный вариант — ручное удаление или использование фильтра по вспомогательному столбцу (если цвет статичный). Для автоматизации потребуется настольная версия Excel.

    Почему макрос не находит строки с моим цветом?

    Скорее всего, вы указали неверный RGB-код. Чтобы узнать точный код цвета ячейки, используйте этот макрос:

    Sub GetCellColor()
    

    MsgBox "Цвет фона: " & Selection.Interior.Color & vbCrLf & _

    "RGB: " & Selection.Interior.ColorMod & vbCrLf & _

    "Hex: " & Right("000000" & Hex(Selection.Interior.Color), 6)

    End Sub

    Выделите ячейку с нужным цветом и запустите макрос — он покажет точные значения для VBA.

    Как удалить строки, если цвет задаётся через условное форматирование с формулой?

    В этом случае сначала нужно зафиксировать цвета:

    1. Скопируйте таблицу на новый лист (Ctrl + C → Ctrl + V).
    2. Выделите данные и нажмите Главная → Формат как таблицу (создайте "умную таблицу").
    3. Перейдите в Условное форматирование → Управление правилами и удалите все правила.
    4. Цвета станут статичными — теперь можно применять любой метод удаления.
    Важно: После этого динамическая подсветка пропадёт. Если она критична, сохраните копию файла.

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

    Если вы удалили строки без сохранения копии, восстановить их можно только через журнал изменений (если файл сохранён в OneDrive или SharePoint) или резервную копию. В локальных файлах Excel не ведёт историю удалений. Чтобы избежать потерь, всегда:

    • Сохраняйте копию файла перед массовым удалением.
    • Используйте Power Query вместо физического удаления — он создаёт отдельную таблицу.

    Почему после удаления строки сдвигаются некорректно?

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

    1. Разъедините ячейки (Главная → Объединить и поместить в центре).
    2. Покажите все скрытые строки (Главная → Формат → Скрыть/отобразить → Отобразить строки).
    3. Удалите строки заново.

    Если проблема остаётся, проверьте таблицу на наличие структурированных ссылок (в "умных таблицах").