Как в Excel выбрать фильтр по нескольким цветам: 5 работающих способов

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

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

Особое внимание уделим ограничениям каждого способа: например, почему фильтр по двум цветам через интерфейс невозможен без макросов, но зато можно автоматизировать процесс с помощью Sub за 3 клика. А для тех, кто не хочет копаться в коде, покажем, как использовать вспомогательные столбцы с формулами GET.CELL — метод, работающий даже в защищённых файлах.

📊 Как часто вы используете цветовую маркировку в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Важно: Все инструкции актуальны для Excel 2013–2026 и Microsoft 365. Для Excel Online и Mac-версий доступны не все методы — об этом предупредим отдельно.

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

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

Причина такого поведения заложена в архитектуре автофильтра. Дело в том, что фильтрация по цвету технически реализована как OR-условие (ИЛИ), но с жёстким ограничением на один критерий. То есть Excel ищет строки, где хоть одна ячейка соответствует выбранному цвету, но не умеет комбинировать несколько цветов в одном запросе.

Это подтверждает и официальная документация Microsoft: в разделе ["Filter by color"](https://support.microsoft.com/en-us/office) чётко указано, что фильтр применяется к одному цвету за раз. Более того, даже если вы попробуете обойти это через Расширенный фильтр, то обнаружите, что в критериях нет опции для работы с цветами — только с текстом, числами и датами.

⚠️ Внимание: В Excel для Mac (версии до 2019 года) фильтр по цвету может работать некорректно с ячейками, закрашенными через Условное форматирование. Цвета, назначенные вручную (Заливка ячейки), отображаются в фильтре, а динамические — нет.

Метод 1: Фильтр по нескольким цветам через вспомогательный столбец

Самый надёжный способ обойти ограничение — создать вспомогательный столбец, который будет содержать коды цветов для каждой ячейки. Затем можно отфильтровать данные по этим кодам, указав несколько значений через Расширенный фильтр или Текстовый фильтр с условием "равно" или "содержит".

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

  1. Добавьте новый столбец рядом с таблицей (например, Stolbec_X).
  2. В первую ячейку столбца введите формулу:
    =GET.CELL(38,!A1)

    где !A1 — адрес ячейки, цвет которой нужно определить (используется имя диапазона, см. шаг 3).

  3. Присвойте имя диапазону: выделите ячейку A1, перейдите в Формулы → Присвоить имя и введите, например, ColorCell. Замените в формуле !A1 на ColorCell.
  4. Растяните формулу на весь столбец. Теперь каждая ячейка Stolbec_X будет содержать числовой код цвета (например, 5296274 для красного).
  5. Примените Расширенный фильтр, указав в критериях нужные цветовые коды.

Чтобы узнать код цвета для конкретного оттенка, выделите закрашенную ячейку и запустите макрос:

Sub GetColorCode()

MsgBox Selection.Interior.Color

End Sub

Он покажет числовое значение, которое нужно вставить в критерии фильтра.

Создать новый столбец справа от таблицы|

Ввести формулу =GET.CELL(38,ColorCell) в первую ячейку|

Присвоить имя диапазону с анализируемыми ячейками|

Растянуть формулу на весь столбец|

Запустить макрос для определения кодов нужных цветов-->

⚠️ Внимание: Формула GET.CELL работает только в именованных диапазонах. Если пропустить шаг с присвоением имени, Excel вернёт ошибку #NAME?. Также этот метод не работает с цветами, назначенными через Условное форматирование — только с ручной заливкой.

Метод 2: Использование VBA для фильтрации по 2+ цветам

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

Sub FilterByMultipleColors()

Dim ws As Worksheet

Dim rng As Range

Dim color1 As Long, color2 As Long

Dim cell As Range

Dim visibleRows As Long

' Настройки: укажите свой лист и диапазон

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

Set rng = ws.Range("A1:D100") ' Диапазон с данными

color1 = RGB(255, 0, 0) ' Красный

color2 = RGB(0, 255, 0) ' Зелёный

' Снять все фильтры

If ws.AutoFilterMode Then ws.AutoFilterMode = False

' Скрыть все строки

ws.Rows.Hidden = True

' Показать строки, где есть ячейки с color1 ИЛИ color2

For Each cell In rng

If cell.Interior.Color = color1 Or cell.Interior.Color = color2 Then

cell.EntireRow.Hidden = False

End If

Next cell

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

visibleRows = ws.Cells.Rows.Count - ws.Cells.SpecialCells(xlCellTypeVisible).Rows.Count

MsgBox "Показано строк: " & ws.Cells.SpecialCells(xlCellTypeVisible).Rows.Count

End Sub

Как адаптировать макрос под свои нужды:

  • 🔹 Замените "Лист1" на имя вашего листа.
  • 🔹 В Set rng укажите ваш диапазон (например, "B2:F500").
  • 🔹 Измените color1 и color2 на нужные цвета, используя RGB или числовые коды (например, color1 = 5296274 для красного).
  • 🔹 Чтобы фильтровать по трем цветам, добавьте условие: Or cell.Interior.Color = color3.

Sub ShowRGB()

MsgBox "RGB: " & Selection.Interior.Color & vbCrLf & _

"Red: " & Selection.Interior.Color Mod 256 & vbCrLf & _

"Green: " & (Selection.Interior.Color \ 256) Mod 256 & vbCrLf & _

"Blue: " & (Selection.Interior.Color \ 65536) Mod 256

End Sub

Этот код покажет отдельные значения красного, зелёного и синего каналов.-->

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

Метод 3: Фильтрация через условное форматирование + текстовые метки

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

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

  1. Добавьте справа от таблицы вспомогательный столбец (например, Теги).
  2. Создайте правило Условного форматирования для каждого цвета:
    • 🔹 Для красных ячеек: правило "Формула" =ИСТИНА с форматированием Заливка: красный + в столбце Теги пропишите значение "Красный".
    • 🔹 Для зелёных: аналогично, но с зелёной заливкой и тегом "Зелёный".
  • Примените Текстовый фильтр к столбцу Теги, выбрав "равно Красный или равно Зелёный".
  • Преимущество этого метода — визуальная наглядность: вы сразу видите, какие ячейки относятся к какой группе. Кроме того, его можно комбинировать с другими фильтрами (например, по датам или числовым значениям).

    Как автоматизировать назначение тегов?

    Если в вашей таблице уже есть цветовая маркировка, можно автоматически заполнить столбец Теги с помощью формулы массива:

    =ЕСЛИ(ИЛИ(GET.CELL(38,!A1)=5296274;GET.CELL(38,!A1)=5287936);"Красный/Зелёный";"")
    

    Где 5296274 и 5287936 — коды красного и зелёного цветов соответственно. Не забудьте присвоить имя диапазону !A1 (как в Методе 1).

    Метод Плюсы Минусы Подходит для
    Вспомогательный столбец с GET.CELL Работает без макросов, точно определяет цвета Не видит цвета из условного форматирования Excel 2010+, защищённые файлы
    VBA-макрос Гибкость (можно фильтровать по 3+ цветам), быстрота Требует навыков программирования, не работает в Excel Online Регулярная работа с большими таблицами
    Текстовые метки Наглядность, совместимость с другими фильтрами Требует предварительной настройки правил Таблицы с ручной цветовой маркировкой

    Метод 4: Обходной путь для Excel Online и Mac

    В веб-версии Excel Online и старых версиях для Mac фильтр по цвету либо отсутствует, либо работает с ошибками. В этом случае поможет комбинация сортировки и ручной фильтрации:

    1. Добавьте вспомогательный столбец с формулой, определяющей цвет (как в Методе 1).
    2. Отсортируйте данные по этому столбцу. Все ячейки одного цвета окажутся сгруппированы.
    3. Вручную скройте ненужные группы, оставив только те, что соответствуют нужным цветам.

    Для Excel Online также можно использовать Power Query (доступен в версиях 2016+):

    1. Выделите таблицу и нажмите Данные → Из таблицы/диапазона.
    2. В редакторе Power Query добавьте пользовательский столбец с формулой:
      = if [Column1] has Color.Red then "Red" else if [Column1] has Color.Green then "Green" else "Other"

      (замените Column1 на имя вашего столбца).

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

    Метод 5: Фильтр по цветам в сводных таблицах

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

    1. Создайте сводную таблицу на основе исходных данных.
    2. Добавьте в неё вспомогательный столбец с текстовыми метками цветов (как в Методе 3).
    3. Перетащите столбец с метками в область Фильтры или Строки.
    4. Теперь вы можете фильтровать сводную таблицу по цветовым группам, как по обычным текстам.
    5. Преимущество этого подхода — динамичность: при изменении исходных данных сводная таблица обновляется автоматически. Кроме того, вы можете добавлять другие критерии фильтрации (например, по датам или категориям).

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

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

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

      1. Фильтр не видит цвета из условного форматирования

      Причина: Формула GET.CELL и макросы работают только с цветами, назначенными через Заливка ячейки (ручная раскраска). Цвета, назначенные через Условное форматирование, являются динамическими и не сохраняются как свойство ячейки.

      Решение:

      • 🔹 Замените условное форматирование на ручную заливку (если цвета статичны).
      • 🔹 Используйте VBA, чтобы считывать цвета из условного форматирования:
        Function GetCFColor(cell As Range) As Long
        

        GetCFColor = cell.DisplayFormat.Interior.Color

        End Function

        Затем применяйте эту функцию во вспомогательном столбце.

      2. После фильтрации пропадают данные

      Причина: Если вы используете макрос, который скрывает строки (как в Методе 2), но не сохраняете состояние фильтра, при следующем открытии файла все строки могут остаться скрытыми.

      Решение: В конце макроса добавьте строку:

      ws.AutoFilterMode = False

      Или используйте Расширенный фильтр с копированием результатов на новый лист.

      3. Цветовые коды не совпадают

      Причина: Цвета в Excel могут выглядеть одинаково, но иметь разные коды (например, если они назначены через разные палитры или темы). Например, "красный" из стандартной палитры и "красный" из темы Office будут иметь разные RGB-значения.

      Решение: Всегда проверяйте код цвета непосредственно из вашей таблицы с помощью макроса из Метода 2 (это единственный надёжный способ).

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

      Можно ли фильтровать по цветам в защищённом листе?

      Да, но с ограничениями. Если лист защищён, вы не сможете:

      • 🔹 Использовать VBA-макросы (они требуют разблокировки листа).
      • 🔹 Добавлять вспомогательные столбцы с формулами (если защита запрещает изменение структуры).

    Обходной путь: Снимите защиту, добавьте вспомогательный столбец с GET.CELL, затем снова защитите лист, разрешив изменение только в этом столбце.

    Почему фильтр по цвету не работает с ячейками, закрашенными через "Условное форматирование"?

    Цвета из Условного форматирования являются динамическими — они не сохраняются как свойство ячейки, а пересчитываются при каждом изменении данных. Стандартные функции Excel (включая GET.CELL) не видят эти цвета.

    Решение: Используйте VBA-функцию DisplayFormat, как показано в разделе про ошибки, или замените условное форматирование на ручную заливку.

    Как фильтровать по цветам в Google Таблицах?

    В Google Sheets нет встроенного фильтра по цвету, но можно использовать скрипт:

    1. Откройте Расширения → Apps Script.
    2. Вставьте код:
      function filterByColor() {
      

      var sheet = SpreadsheetApp.getActiveSheet();

      var range = sheet.getDataRange();

      var values = range.getValues();

      var colors = range.getBackgrounds();

      var targetColors = ["#ff0000", "#00ff00"]; // Красный и зелёный

      for (var i = 0; i < colors.length; i++) {

      var hideRow = true;

      for (var j = 0; j < colors[i].length; j++) {

      if (targetColors.includes(colors[i][j])) {

      hideRow = false;

      break;

      }

      }

      sheet.hideRows(i + 1, 1, hideRow);

      }

      }

    3. Запустите скрипт — он скрывает все строки, кроме тех, что содержат указанные цвета.
    Можно ли сохранить фильтр по нескольким цветам для повторного использования?

    Да, если вы используете VBA или Power Query:

    • 🔹 Для VBA: сохраните макрос в Персональной книге макросов (Personal.xlsb), чтобы он был доступен во всех файлах.
    • 🔹 Для Power Query: сохраните запрос — при следующем открытии файла достаточно обновить данные.

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

    Как фильтровать по цветам шрифта, а не заливки?

    Все методы, описанные в статье, работают и для цвета шрифта. Нужно лишь заменить:

    • 🔹 В формуле GET.CELL: используйте GET.CELL(24, ...) вместо GET.CELL(38, ...) (24 — код для цвета шрифта).
    • 🔹 В VBA: замените cell.Interior.Color на cell.Font.Color.