Как в Excel отобразить только ячейки, выделенные цветом: фильтрация по цвету заливки

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

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

Дело в том, что Excel по умолчанию не рассматривает цвет заливки как критерий фильтрации. Для программы это просто визуальное оформление, а не часть данных. Однако есть как минимум 5 рабочих способов обойти это ограничение — от встроенных инструментов до макросов VBA. В этой статье разберём каждый метод с пошаговыми инструкциями, нюансами и примерами, когда какой способ оптимален.

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

Способ 1: Фильтр по цвету ячейки (встроенный инструмент)

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

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

Ограничение: этот метод работает только если цвет применён ко всей ячейке, а не к её части (например, через условное форматирование с градиентом). Также он не покажет ячейки, где цвет заливки установлен через Условное форматирование на основе формулы — только ручную заливку.

Цвет применён ко всей ячейке, а не к тексту внутри неё|

Цвет заливки установлен вручную, а не через условное форматирование|

Выделен весь диапазон данных, включая заголовки|

Версия Excel не старше 2007 года-->

Если нужный цвет не отображается в палитре, значит:

  • 🔴 Цвет применён через условное форматирование (нужен Способ 3).
  • 🟡 Ячейки окрашены в оттенок, которого нет в стандартной палитре (попробуйте Способ 4).
  • 🟢 Цвет заливки установлен через Формат ячеек → Заливка → Другие цвета (требуется VBA).

Способ 2: Специальная вставка + фильтр (для условного форматирования)

Когда цвет ячейки задаётся через Условное форматирование, стандартный фильтр его "не видит". Но есть обходной путь: сначала преобразовать условный цвет в ручную заливку, а затем применить фильтр по цвету. Вот как это сделать:

  1. Выделите диапазон с условно окрашенными ячейками.
  2. Нажмите Ctrl+C, чтобы скопировать их.
  3. Щёлкните правой кнопкой по выделенной области и выберите Специальная вставкаФорматы.
  4. Теперь цвет заливки станет "ручным", и его можно отфильтровать через Фильтр по цвету ячейки (Способ 1).

Важно: после такой операции условное форматирование в этих ячейках сбросится. Еслиlater вам потребуется обновить цвета по правилам, придётся применять условное форматирование заново.

Этот метод подходит для:

  • 📊 Таблиц с условным форматированием по простым правилам (например, "больше 100 — красный").
  • 📈 Данных, где цвет не меняется динамически (иначе придётся повторять процедуру после каждого обновления).
  • 🖥️ Пользователей, у которых отключены макросы (VBA не требуется).

Способ 3: Функция GET.CELL (для опытных пользователей)

Если вам нужно отфильтровать ячейки по цвету, который задаётся динамически (например, через формулу в условном форматировании), поможет малоизвестная функция GET.CELL. Она позволяет получить информацию о формате ячейки, включая цвет заливки. Вот как её применить:

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

    где 38 — код цвета заливки, а !A1 — адрес первой ячейки диапазона (без знака $!).

  3. Нажмите F9, чтобы пересчитать формулу (она вернёт число — код цвета).
  4. Растяните формулу на весь диапазон.
  5. Теперь отфильтруйте таблицу по новому столбцу, выбрав нужный код цвета.

Расшифровка кодов цвета:

КодЦветПример
0Нет заливкиБелый фон
3КрасныйRGB(255,0,0)
4ЗелёныйRGB(0,255,0)
5СинийRGB(0,0,255)
43ЖёлтыйRGB(255,255,0)

⚠️ Внимание: Функция GET.CELL работает только в именованных формулах. Чтобы её использовать, сначала создайте имя:

  1. Перейдите на вкладку ФормулыДиспетчер имёнСоздать.
  2. В поле Имя введите, например, ColorCode.
  3. В поле Диапазон введите формулу =GET.CELL(38,!A1).
  4. Нажмите OK.

Затем в ячейке столбца используйте =ColorCode.

Как узнать код цвета для нестандартных оттенков?

Используйте VBA-макрос:

Sub GetColorCode()

Dim rng As Range

Set rng = Selection

MsgBox "Цветовой код: " & rng.Interior.ColorIndex

End Sub

Выделите ячейку с нужным цветом, запустите макрос (Alt+F8), и он покажет ColorIndex.

Способ 4: Макрос VBA для фильтрации по любому цвету

Если предыдущие методы не сработали (например, цвет заливки задаётся через RGB или HEX-код), на помощь придёт VBA. Этот способ универсален и работает даже с нестандартными оттенками. Вот готовый код:

Sub FilterByColor()

Dim ws As Worksheet

Dim rng As Range, cell As Range

Dim colorToFind As Long

Dim firstAddress As String

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

colorToFind = RGB(255, 0, 0) ' Измените на нужный цвет

Set ws = ActiveSheet

Set rng = ws.UsedRange

' Сначала снимите все фильтры

If ws.AutoFilterMode Then ws.AutoFilterMode = False

' Примените фильтр по цвету

rng.AutoFilter Field:=1, Criteria1:=colorToFind, Operator:=xlFilterCellColor

' Сообщите пользователю

MsgBox "Фильтр по цвету RGB(" & _

(colorToFind Mod 256) & ", " & _

((colorToFind \ 256) Mod 256) & ", " & _

(colorToFind \ 65536) & ") применён!", vbInformation

End Sub

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Измените строку colorToFind = RGB(255, 0, 0) на нужный цвет (например, RGB(0, 255, 0) для зелёного).
  4. Закройте редактор и запустите макрос (Alt+F8 → выберите FilterByColorВыполнить).

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

Стандартный фильтр по цвету|

Специальная вставка + фильтр|

Функция GET.CELL|

Макросы VBA|

Другой метод-->

Способ 5: Power Query (для больших таблиц)

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

  1. Выделите вашу таблицу и нажмите Данные → Из таблицы/диапазонаExcel 2016+).
  2. В открывшемся редакторе Power Query добавьте новый столбец: Добавить столбец → Пользовательский столбец.
  3. Введите формулу для извлечения цвета (пример для красного):
    = if [@[ВашСтолбец]] = "ВашеЗначение" then "Красный" else "Другой"
    (Замените [@[ВашСтолбец]] и "ВашеЗначение" на реальные данные.)
  4. Фильтруйте таблицу по новому столбцу с цветами.
  5. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Преимущества Power Query:

  • 🔄 Автоматическое обновление при изменении исходных данных.
  • 📊 Работа с миллионами строк без замедления.
  • 🔧 Гибкие правила преобразования (можно учитывать несколько цветов).

⚠️ Внимание: Power Query не "видит" цвет заливки напрямую — он работает с правилами, по которым цвет применяется. Если цвет задаётся вручную, этот метод не подойдёт.

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

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

Метод Подходит для Плюсы Минусы
Фильтр по цвету (Способ 1) Ручная заливка, стандартные цвета Быстро, без макросов Не работает с условным форматированием
Специальная вставка (Способ 2) Условное форматирование Сохраняет структуру данных Сбрасывает динамические правила
GET.CELL (Способ 3) Динамические цвета, формулы Работает с любыми цветами Сложно настроить, требует именованных формул
VBA (Способ 4) Любые цвета, включая RGB Максимальная гибкость Требует разрешения на макросы
Power Query (Способ 5) Большие таблицы, сложные правила Автоматизация, масштабируемость Не видит ручную заливку

Критически важный нюанс: если цвет ячейки задаётся через условное форматирование с формулой (например, =A1>100), ни один из методов не сработает корректно, кроме VBA или преобразования в ручную заливку. В этом случае сначала извлеките условие в отдельный столбец (например, =A1>100), а затем фильтруйте по нему.

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

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

  • 🔴 Цвет не отображается в фильтре: Убедитесь, что цвет применён ко всей ячейке, а не к тексту. Проверьте, не скрыт ли столбец с цветными ячейками.
  • 🟡 Фильтр показывает не все строки: Возможно, цвет в некоторых ячейках задаётся через Условное форматирование с относительными ссылками. Используйте Специальную вставку (Способ 2).
  • 🟢 Макрос не работает: Проверьте, разрешены ли макросы в Параметрах безопасности. Также убедитесь, что цвет в коде RGB совпадает с реальным цветом ячейки (используйте Цветовая пипетка в Формат ячейки, чтобы узнать точный оттенок).
  • 🔵 После фильтрации пропадают данные: Не забывайте снимать фильтр перед сохранением файла (Данные → Фильтр → Очистить).

Если ни один метод не сработал, проверьте:

  1. Не защищён ли лист от изменений (Рецензирование → Снять защиту листа).
  2. Не скрыты ли строки/столбцы (Главная → Формат → Отобразить).
  3. Не используется ли в таблице структурированная ссылка (например, из сводной таблицы).

FAQ: Ответы на популярные вопросы

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

Да, для этого в стандартном фильтре (Данные → Фильтр) выберите Фильтр по цвету шрифта вместо Фильтр по цвету ячейки. В VBA используйте свойство Font.Color вместо Interior.Color.

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

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

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

Решение: проверьте диапазон фильтрации или используйте VBA для точного контроля.

Как сохранить фильтр по цвету при закрытии файла?

Фильтры по цвету не сохраняются автоматически. Чтобы вернуть их после открытия файла:

  1. Создайте таблицу Excel (Ctrl+T), а не обычный диапазон.
  2. Сохраните файл в формате .xlsm (с поддержкой макросов), если используете VBA.
  3. Для Power Query нажмите Закрыть и загрузить в...Таблица.
Работает ли фильтрация по цвету в Excel Online?

Нет, в Excel Online доступны только базовые функции фильтрации. Для работы с цветами используйте:

  • Настольную версию Excel (Windows/Mac).
  • Мобильное приложение Excel (с ограничениями).
  • Экспорт данных в .xlsx и обработку на ПК.
Можно ли отфильтровать ячейки по цвету в Google Таблицах?

Да, в Google Sheets это делается проще:

  1. Выделите диапазон → Данные → Создать фильтр.
  2. Щёлкните по иконке фильтра в столбце → Фильтр по цвету → выберите цвет.

Также можно использовать функцию =GETCELL в Apps Script для динамической фильтрации.