Как сделать цветовой фильтр в Excel: 4 рабочих способа с примерами

Если в вашей таблице Excel ячейки окрашены в разные цвета (например, через условное форматирование или вручную), а стандартный фильтр игнорирует эту раскраску, проблема решается за 3 минуты. Цветовой фильтр в Excel не включен по умолчанию — его нужно активировать через Данные → Фильтр → Фильтр по цвету или настроить вручную. Чаще всего пользователи сталкиваются с тем, что опция "Фильтр по цвету ячейки" неактивна: это означает, что в диапазоне нет цветовых меток или используется устаревшая версия Excel (до 2010 года). Ниже разберём 4 способа фильтрации по цвету — от базового до автоматизированного через VBA.

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

1. Базовый фильтр по цвету ячейки (Excel 2010 и новее)

Самый простой способ — использовать встроенную функцию фильтрации по цвету заливки. Она доступна в версиях Excel 2010–2023 и Microsoft 365, но требует, чтобы в таблице уже были окрашенные ячейки. Если цвет добавлен через условное форматирование, фильтр будет работать корректно только при статических правилах (без формул).

Чтобы применить фильтр:

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

Если опция Фильтр по цвету неактивна, проверьте:

  • 🔹 Есть ли в столбце ячейки с заливкой (даже одна).
  • 🔹 Не используется ли в таблице умная таблица Excel (в них фильтр по цвету работает иначе).
  • 🔹 Не скрыты ли строки/столбцы — фильтр применяется только к видимым данным.

2. Фильтрация по цвету в умных таблицах Excel

Если ваши данные оформлены как умная таблица (Вставка → Таблица или Ctrl+T), алгоритм фильтрации по цвету отличается. В таких таблицах опция Фильтр по цвету появляется автоматически, но работает только с заливкой ячеек, а не текста. Главное преимущество — фильтр сохраняется при добавлении новых строк.

Инструкция для умных таблиц:

  1. Выделите любую ячейку в таблице.
  2. На вкладке Конструктор (появляется при выделении таблицы) убедитесь, что включена опция Строка заголовков.
  3. Нажмите на стрелочку фильтра в заголовке столбца.
  4. Выберите Фильтр по цвету → укажите нужный оттенок заливки.

Ограничения умных таблиц:

  • 🔸 Нельзя фильтровать по цвету шрифта.
  • 🔸 Если цвет добавлен через условное форматирование с формулой, фильтр может работать некорректно.
  • 🔸 При конвертации таблицы обратно в диапазон фильтр по цвету сбрасывается.
📊 Как часто вы используете цветовую маркировку в Excel?
Постоянно, для всех таблиц
Только для важных данных
Реде, в исключительных случаях
Никогда не использую

3. Условное форматирование + фильтр: обходной путь

Если вам нужно отфильтровать данные по цвету текста (а не заливки), стандартные инструменты Excel не помогут. Решение — создать вспомогательный столбец с формулой, которая будет определять цвет шрифта, а затем фильтровать по этому столбцу.

Алгоритм:

  1. Добавьте справа от таблицы новый столбец (например, Цвет текста).
  2. В первой ячейке столбца введите формулу, которая проверяет цвет шрифта:
    =GET.CELL(38,!A1)
    Примечание: GET.CELL — это макрос, который нужно предварительно подключить через Формулы → Определённые имена → Имя: ЦветТекста, Формула: =GET.CELL(38,!A1).
  3. Растяните формулу на весь столбец.
  4. Теперь можно фильтровать данные по значениям в новом столбце (они будут отображать код цвета).

Альтернативный способ для цветов заливки:

  • 🔹 Используйте формулу =GET.CELL(63,!A1) для определения цвета фона.
  • 🔹 Для упрощения создайте пользовательскую функцию VBA (пример кода ниже в разделе 4).
Почему GET.CELL возвращает 0 для ячеек без цвета?

Функция GET.CELL(38) возвращает 0, если цвет шрифта не изменён (используется цвет по умолчанию для книги). Для цвета заливки GET.CELL(63) вернёт 0, если ячейка не имеет фоновой заливки.

4. Автоматизация через VBA: фильтр по любому цвету

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

Код для фильтра по цвету заливки:

Sub FilterByCellColor

Dim rng As Range, cell As Range

Dim colorToFilter As Long

Dim firstAddress As String

' Запрашиваем у пользователя цвет для фильтрации

colorToFilter = InputBox("Введите код цвета (например, 255 для красного)","Фильтр по цвету")

' Убираем все фильтры

On Error Resume Next

Selection.Parent.ShowAllData

On Error GoTo 0

' Применяем фильтр

For Each cell In Selection

If cell.Interior.Color = colorToFilter Then

If firstAddress ="" Then firstAddress = cell.Address

If rng Is Nothing Then

Set rng = cell

Else

Set rng = Union(rng, cell)

End If

End If

Next cell

If Not rng Is Nothing Then

rng.EntireRow.Hidden = False

End If

' Скрываем строки, не соответствующие цвету

For Each cell In Selection

If cell.Interior.Color <> colorToFilter Then

cell.EntireRow.Hidden = True

End If

Next cell

End Sub

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (Вставка → Модуль).
  3. Вернитесь в Excel, выделите диапазон для фильтрации.
  4. Запустите макрос (Alt+F8 → выберите FilterByCellColorВыполнить).
  5. Введите код цвета (например, 255 для красного, 5287936 для жёлтого).

Чтобы узнать код цвета ячейки:

  • 🔹 Выделите ячейку с нужным цветом.
  • 🔹 Запустите макрос:
    Sub GetCellColor
    

    MsgBox"Код цвета:" & Selection.Interior.Color

    End Sub

  • 🔹 Скопируйте код из всплывающего окна.

5. Ошибки и решения при фильтрации по цвету

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

Проблема Возможная причина Решение
Опция"Фильтр по цвету" неактивна В столбце нет ячеек с заливкой Добавьте заливку хотя бы к одной ячейке или используйте условное форматирование
Фильтр не показывает некоторые цвета Цвета добавлены через условное форматирование с формулой Преобразуйте формулы в статические цвета (Главная → Формат по образцу)
После фильтрации пропадают данные Скрыты строки, а не применён фильтр Используйте Главная → Формат → Отобразить или макрос для показа всех строк
Фильтр по цвету шрифта не работает Excel не поддерживает фильтрацию по цвету текста Используйте VBA или вспомогательный столбец с формулой GET.CELL

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

  • 🔹 Преобразуйте динамические цвета в статические (Копировать → Специальная вставка → Значения и форматы).
  • 🔹 Используйте Power Query для предварительной обработки данных.

Выделен ли диапазон с заголовками?|Есть ли в столбце ячейки с заливкой?|Не используется ли условное форматирование с формулами?|Сохранена ли книга в формате.xlsx (не.xls)?-->

6. Альтернативные способы: Power Query и сводные таблицы

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

Инструкция для Power Query:

  1. Выделите таблицу и нажмите Данные → Из таблицы/диапазона (или Power Query → Из таблицы).
  2. В редакторе Power Query добавьте пользовательский столбец (Добавить столбец → Пользовательский).
  3. Введите формулу для определения цвета (например, для цвета заливки):
    = if [YourColumnName]{[Index]}[BackgroundColor] ="#FFFF0000" then"Красный" else"Другой"
  4. Фильтруйте данные по новому столбцу.
  5. Нажмите Главная → Закрыть и загрузить.

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

  • 🔹 Создать вспомогательный столбец с описанием цвета (как в разделе 3).
  • 🔹 Добавить этот столбец в область Фильтры сводной таблицы.
  • 🔹 Использовать вычисляемые поля для группировки данных по цвету.

Важно: Power Query и сводные таблицы не обновляют цвета динамически. Если исходные данные изменятся, потребуется повторная обработка.

7. Практические примеры применения цветовых фильтров

Цветовые фильтры полезны в следующих сценариях:

  • 📊 Анализ продаж: окрашивайте ячейки с просроченными сделками в красный, а новые — в зелёный, затем фильтруйте по статусу.
  • 📅 Управление задачами: используйте цвета для приоритетов (высокий/средний/низкий) и быстро сортируйте список.
  • 💰 Бюджетирование: выделяйте цветом превышение лимитов или критические статьи расходов.
  • 📦 Инвентаризация: маркируйте товары по состоянию (новые, б/у, бракованные) и фильтруйте по категориям.

Пример для анализа продаж:

  1. Создайте таблицу с колонками Даты, Сумма, Статус.
  2. Добавьте условное форматирование для колонки Статус:

    Правило 1: Если"Статус" ="Просрочено" → красный фон.

    Правило 2: Если"Статус" ="Новое" → зелёный фон.

  3. Примените фильтр по цвету, чтобы увидеть только просроченные сделки.
Как автоматизировать цветовую маркировку?

Используйте формулы в условном форматировании. Например, для маркировки просроченных задач:

1. Выделите колонку с датами.

2. Создайте правило: Форматировать ячейки, если... → Формула → =TODAY-A1>7 (просрочено более чем на 7 дней).

3. Укажите красный цвет заливки.

Теперь фильтр по красному цвету будет показывать только просроченные задачи.

FAQ: Частые вопросы по цветовым фильтрам

Можно ли фильтровать по цвету шрифта без VBA?

Нет, стандартные инструменты Excel не поддерживают фильтрацию по цвету текста. Альтернативные способы:

  • Создайте вспомогательный столбец с формулой GET.CELL(38) (требует предварительной настройки).
  • Используйте условное форматирование для окраски фона ячеек на основе цвета шрифта, затем фильтруйте по фоновому цвету.
Почему фильтр по цвету не сохраняется после сохранения файла?

Это происходит, если:

  • Файл сохранён в формате .xls (старый формат). Сохраните как .xlsx.
  • Цвета добавлены через динамическое условное форматирование. Преобразуйте их в статические (Копировать → Специальная вставка → Форматы).
  • Включена опция Автоматический пересчёт формул (Формулы → Параметры вычислений), которая сбрасывает фильтры.
Как скопировать только отфильтрованные (по цвету) данные в другую таблицу?

Способы:

  1. Выделите видимые ячейки (Alt+;), скопируйте (Ctrl+C) и вставьте в новое место.
  2. Используйте Power Query:

    1. Загрузите данные в Power Query.

    2. Добавьте столбец с цветом (как описано в разделе 6).

    3. Отфильтруйте по этому столбцу и загрузите результат в новую таблицу.

  3. Напишите макрос для копирования видимых строк:
    Sub CopyVisibleRows
    

    Dim rng As Range, cell As Range

    For Each cell In Selection

    If Not cell.EntireRow.Hidden Then

    If rng Is Nothing Then

    Set rng = cell

    Else

    Set rng = Union(rng, cell)

    End If

    End If

    Next

    rng.Copy Destination:=Sheets("Лист2").Range("A1")

    End Sub

Можно ли применить цветовой фильтр к нескольким столбцам одновременно?

Да, но с ограничениями:

  • Стандартный фильтр по цвету работает отдельно для каждого столбца. Например, нельзя одновременно отфильтровать строки, где в Столбце A ячейка красная, а в Столбце B — зелёная.
  • Обходной путь: используйте VBA или Power Query для создания комплексных правил фильтрации.
  • Для простых случаев добавьте вспомогательный столбец с формулой, которая проверяет комбинацию цветов (например, =И(GET.CELL(63,!A1)=255; GET.CELL(63,!B1)=5287936)).
Как сбросить фильтр по цвету?

Способы:

  • Нажмите на стрелочку фильтра в заголовке столбца → Удалить фильтр из столбца.
  • Используйте горячие клавиши: Alt+D → F → S (последовательно).
  • Для макросов: добавьте в код строку ActiveSheet.ShowAllData.
  • Если данные скрыты через VBA (а не отфильтрованы), используйте:
    Cells.EntireRow.Hidden = False