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

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

Вы когда-нибудь пытались отсортировать таблицу в Excel по цвету ячеек, но обнаруживали, что стандартный фильтр просто игнорирует ваши закрашенные данные? Это не баг программы — так работает логика автофильтра. По умолчанию Excel фильтрует только по значениям ячеек, тексту или числам, полностью игнорируя визуальное оформление. Но что делать, если вам критически важно выделить строки именно с красным и зелёным фоном одновременно — например, для анализа финансовых отчётов или контрольных листов?

Проблема усложняется, когда нужно отфильтровать данные сразу по двум цветам. Стандартный инструмент Фильтр по цвету ячейки в меню Данные → Фильтр позволяет выбрать только один цвет за раз. Попытка применить фильтр последовательно к двум цветам приведёт к тому, что вы увидите только строки с последним выбранным цветом — первый фильтр просто перезапишется. Решение есть, и их даже несколько: от скрытых возможностей условного форматирования до написания простого макроса на VBA.

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

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

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

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

  1. Добавьте вспомогательный столбец справа от ваших данных (например, столбец Z, если данные заканчиваются на Y).
  2. В первой ячейке вспомогательного столбца (например, Z2) введите формулу:
    =ЕСЛИ(ИЛИ(ЦВЕТЯЧЕЙКИ(A2)=44; ЦВЕТЯЧЕЙКИ(A2)=53); "Да"; "Нет")
    Примечание: вместо 44 и 53 подставьте индексы цветов из вашей таблицы (как их узнать — читайте ниже).
  3. Растяните формулу на все строки таблицы.
  4. Примените стандартный фильтр к вспомогательному столбцу, выбрав значение "Да".

Но как узнать числовые индексы цветов? Для этого:

  1. Выделите ячейку с нужным цветом.
  2. Нажмите Alt + F11, чтобы открыть редактор VBA.
  3. В окне Immediate (нажмите Ctrl + G, если его не видно) введите:
    ? ActiveCell.Interior.ColorIndex
  4. Нажмите Enter — в ответ вы получите числовой индекс цвета (например, 3 для красного, 4 для зелёного в стандартной палитре).

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

Узнаны ColorIndex нужных цветов (через VBA)

Введена формула ЦВЕТЯЧЕЙКИ с условием ИЛИ

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

Применён фильтр по значению "Да"-->

Плюсы метода:

  • 🔹 Работает во всех версиях Excel, включая Excel Online.
  • 🔹 Не требует знания программирования.
  • 🔹 Можно фильтровать по любому количеству цветов, добавляя их в формулу через ИЛИ.

Минусы:

  • 🔸 Требует добавления вспомогательного столбца (может быть неудобно для больших таблиц).
  • 🔸 Нужно вручную узнавать ColorIndex для каждого цвета.
⚠️ Внимание: Если вы используете тему документа или нестандартные цвета (не из стандартной палитры Excel), функция ColorIndex может возвращать некорректные значения. В этом случае используйте Color вместо ColorIndex (но тогда индексы будут в формате RGB, например, 255 для красного).

Метод 2: Использование функции ПОЛУЧИТЬ.ЯЧЕЙКУ (для опытных пользователей)

Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (или GET.CELL в английской версии) — это скрытый инструмент Excel, который позволяет получать детальную информацию о ячейке, включая её цвет. Однако она работает только в именованных формулах и требует особой настройки.

Вот как ею воспользоваться:

  1. Выделите любую ячейку и нажмите Ctrl + F3, чтобы открыть Диспетчер имён.
  2. Создайте новое имя (например, GetColor) и в поле Диапазон введите:
    =ПОЛУЧИТЬ.ЯЧЕЙКУ(38;!A1)

    где 38 — это код для получения цвета фона ячейки.

  3. Теперь во вспомогательном столбце можно использовать формулу:
    =ЕСЛИ(ИЛИ(GetColor=65535; GetColor=65280); "Да"; "Нет")

    где 65535 и 65280 — цвета в формате RGB (жёлтый и зелёный соответственно).

Этот метод более гибкий, чем ColorIndex, так как работает с любыми цветами, включая пользовательские. Однако он сложнее в настройке и требует понимания, как работают именованные диапазоны.

Цвет ColorIndex RGB-код (для GET.CELL)
Красный 3 255
Зелёный 4 65280
Синий 5 16711680
Жёлтый 6 65535
Белый 2 16777215

Метод 3: Фильтрация через Power Query (для Excel 2016 и новее)

Если вы работаете в Excel 2016 или новее (включая Office 365), у вас есть мощный инструмент — Power Query. Он позволяет импортировать данные, преобразовывать их и фильтровать по любым критериям, включая цвета. Вот как это сделать:

  1. Выделите вашу таблицу и перейдите на вкладку ДанныеИз таблицы/диапазона (или Get Data → From Table/Range в английской версии).
  2. В открывшемся редакторе Power Query добавьте пользовательский столбец:
    • Нажмите Добавить столбец → Пользовательский столбец.
    • Введите название столбца (например, ColorFilter).
    • В поле формулы введите:
      = if [YourColumnName] = "Ваше значение" and Table.AddColumn(#"Previous Step", "BackgroundColor", each if [YourColumnName] = "Ваше значение" then "Red" else "Green")
      Примечание: Здесь требуется знание M-языка (языка Power Query). Для цветов проще использовать условную логику на основе значений.
  • Отфильтруйте новый столбец по нужным цветам.
  • Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.
  • К сожалению, Power Query не может напрямую считывать цвет ячейки — для этого потребуется обходной путь через VBA или вспомогательные столбцы. Однако если цвета назначаются по определённым правилам (например, красный — для отрицательных значений, зелёный — для положительных), вы можете воспроизвести эту логику в Power Query и фильтровать уже по ней.

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

    Метод 4: Автоматизация через VBA (самый мощный способ)

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

    Вот готовый макрос, который фильтрует строки по двум заданным цветам:

    Sub FilterByTwoColors()
    

    Dim ws As Worksheet

    Dim rng As Range

    Dim cell As Range

    Dim color1 As Long, color2 As Long

    Dim lastRow As Long

    ' Укажите здесь ваши цвета (в формате RGB)

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

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

    ' Укажите лист и диапазон (например, "A2:Z1000")

    Set ws = ThisWorkbook.Sheets("Лист1") ' Измените на имя вашего листа

    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    Set rng = ws.Range("A2:Z" & lastRow)

    ' Сначала показываем все строки

    ws.Rows.Hidden = False

    ' Прячем строки, которые не соответствуют цветам

    For Each cell In rng.Columns(1).Cells ' Проверяем только первый столбец (можно изменить)

    If cell.Interior.Color <> color1 And cell.Interior.Color <> color2 Then

    cell.EntireRow.Hidden = True

    End If

    Next cell

    End Sub

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

    1. Нажмите Alt + F11, чтобы открыть редактор VBA.
    2. Вставьте код выше в новый модуль (Insert → Module).
    3. Измените параметры:
      • color1 и color2 — на нужные цвета (используйте RGB или ColorIndex).
      • Лист1 — на имя вашего листа.
      • A2:Z1000 — на ваш диапазон данных.
  • Закройте редактор VBA и запустите макрос через Alt + F8.
  • Преимущества VBA:

    • 🔹 Мгновенная фильтрация даже для таблиц с 100 000+ строк.
    • 🔹 Можно сохранить макрос и использовать его повторно.
    • 🔹 Гибкость: можно фильтровать по цветам шрифта, заливки или даже градиента.

    Недостатки:

    • 🔸 Требует базовых знаний VBA (или готовности скопировать код).
    • 🔸 Макросы могут быть отключены в вашей организации по политике безопасности.
    Как узнать RGB-код цвета ячейки?

    1. Выделите ячейку с нужным цветом.

    2. Нажмите Alt + F11, затем Ctrl + G, чтобы открыть окно Immediate.

    3. Введите команду:

    ? ActiveCell.Interior.Color

    4. Нажмите Enter — вы получите число в формате RGB (например, 255 для красного).

    5. Используйте это число в макросе вместо RGB(255, 0, 0).

    Метод 5: Использование Office Scripts (для Excel Online)

    Если вы работаете в Excel Online, у вас нет доступа к VBA, но зато есть Office Scripts — новый инструмент автоматизации на основе TypeScript. С его помощью тоже можно фильтровать данные по цветам, хотя это и потребует немного больше усилий.

    Вот пример скрипта для фильтрации по двум цветам:

    function main(workbook: ExcelScript.Workbook) {
    

    // Укажите имя листа

    let sheet = workbook.getActiveWorksheet();

    // Укажите диапазон (например, "A2:Z1000")

    let range = sheet.getRange("A2:Z1000");

    // Укажите цвета в формате HTML (например, "#FF0000" для красного)

    let color1 = "#FF0000"; // Красный

    let color2 = "#00FF00"; // Зелёный

    // Получаем все строки

    let rows = range.getRows();

    for (let i = rows.length - 1; i >= 0; i--) {

    let cell = rows[i].getCell(0); // Проверяем первую ячейку в строке

    let cellColor = cell.getFormat().getFill().getColor();

    // Если цвет не совпадает ни с одним из нужных — скрываем строку

    if (cellColor !== color1 && cellColor !== color2) {

    sheet.getRow(i + range.getRowIndex()).setHidden(true);

    }

    }

    }

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

    1. Откройте вашу таблицу в Excel Online.
    2. Перейдите на вкладку АвтоматизацияНовый скрипт.
    3. Вставьте код выше и измените параметры (имя листа, диапазон, цвета).
    4. Сохраните скрипт и запустите его.

    Office Scripts — это будущее автоматизации в Excel Online, но на данный момент (2026 год) у этого инструмента есть ограничения:

    • 🔸 Работает только в браузере (не в десктопной версии Excel).
    • 🔸 Требует знания основ TypeScript для модификации скриптов.
    • 🔸 Невозможно записать макрос — нужно писать код вручную.

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

    Выбор метода зависит от ваших задач, версии Excel и уровня подготовки. В таблице ниже — сравнение всех способов:

    Метод Сложность Работает в Excel Online Скорость Подходит для больших таблиц Требует вспомогательных столбцов
    Условное форматирование + фильтр Низкая Да Средняя Нет Да
    Функция ПОЛУЧИТЬ.ЯЧЕЙКУ Средняя Нет Средняя Да Да
    Power Query Высокая Да Высокая Да Нет
    VBA Средняя Нет Очень высокая Да Нет
    Office Scripts Высокая Да Высокая Да Нет

    Рекомендации по выбору:

    • 🔹 Если вам нужно однократное решение и вы не хотите возиться с кодом — используйте условное форматирование + вспомогательный столбец.
    • 🔹 Если вы работаете с большими данными и готовы написать макрос — VBA будет самым быстрым и надёжным вариантом.
    • 🔹 Если вы в Excel Online — ваш единственный вариант (помимо ручной фильтрации) — Office Scripts.
    • 🔹 Если цвета назначаются по логическим правилам (например, красный для отрицательных чисел) — Power Query поможет автоматизировать процесс.

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

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

    1. Фильтр не находит цвета, хотя они есть в таблице

    Причина: Вы используете ColorIndex, но цвета в вашей таблице — пользовательские (не из стандартной палитры). Решение: используйте RGB вместо ColorIndex или узнайте точный код цвета через VBA (как описано выше).

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

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

    3. Макрос не работает в другой книге

    Причина: В коде жёстко прописано имя листа (например, "Лист1"), а в новой книге лист называется иначе. Решение: используйте ActiveSheet вместо жёсткого имени или добавьте проверку:

    On Error Resume Next
    

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

    If ws Is Nothing Then Set ws = ThisWorkbook.Sheets(1)

    On Error GoTo 0

    4. Цвета в Power Query не сохраняются

    Причина: Power Query не поддерживает форматирование ячеек. Решение: если цвета назначаются по правилам (например, условное форматирование), воспроизведите эти правила в Power Query через Добавление столбца → Пользовательский столбец.

    5. Фильтр работает медленно на больших таблицах

    Причина: Формулы во вспомогательном столбце пересчитываются для каждой ячейки. Решение: используйте VBA или Power Query — они работают значительно быстрее на больших объёмах данных.

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

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

    Можно ли отфильтровать данные по цвету шрифта, а не заливки?

    Да, все методы из этой статьи работают и для цвета шрифта. В макросах VBA вместо cell.Interior.Color используйте cell.Font.Color. Для функции ПОЛУЧИТЬ.ЯЧЕЙКУ вместо кода 38 (цвет заливки) используйте 24 (цвет шрифта).

    Почему после фильтрации некоторые строки пропадают, хотя их цвет подходит?

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

    For Each cell In rng.Rows(i).Cells
    

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

    ' Показываем строку, если хотя бы одна ячейка подходит

    rowVisible = True

    Exit For

    End If

    Next cell

    Как отфильтровать по двум цветам в Google Sheets?

    В Google Sheets нет встроенной функции для фильтрации по цветам, но можно использовать Google Apps Script (аналог VBA). Вот пример кода:

    function filterByColors() {
    

    const sheet = SpreadsheetApp.getActiveSheet();

    const range = sheet.getDataRange();

    const color1 = "#ff0000"; // Красный

    const color2 = "#00ff00"; // Зелёный

    range.getValues().forEach((row, index) => {

    const rowRange = sheet.getRange(index + 1, 1, 1, row.length);

    const rowColors = rowRange.getBackgrounds()[0];

    if (!rowColors.some(color => color === color1 || color === color2)) {

    sheet.hideRows(index + 1);

    }

    });

    }

    Чтобы использовать этот скрипт:

    1. Откройте Google SheetsРасширения → Apps Script.
    2. Вставьте код и сохраните.
    3. Запустите функцию filterByColors.
    Можно ли сохранить фильтр по цветам, чтобы не настраивать его каждый раз?

    Да, есть несколько способов:

    • 🔹 В VBA: сохраните макрос в персональной книге макросов (Personal.xlsb), и он будет доступен во всех файлах.
    • 🔹 Во вспомогательном столбце: оставьте формулу на листе и просто применяйте фильтр по значению "Да" при необходимости.
    • 🔹 В Power Query: сохраните запрос и обновляйте его по мере изменения данных.
    Почему в моём Excel нет функции ЦВЕТЯЧЕЙКИ?

    Функции ЦВЕТЯЧЕЙКИ (или GET.CELL) нет в стандартном списке функций Excel. Она работает только через именованные диапазоны, как описано в Методе 2. Если вы пытаетесь ввести её напрямую в ячейку, Excel выдаст ошибку #ИМЯ?.