Фильтр по цвету ячейки в Microsoft Excel не работает через стандартное меню Данные → Фильтр, если цвет был назначен вручную или через условное форматирование. Проблема возникает из-за того, что Excel по умолчанию игнорирует визуальные атрибуты при сортировке, фокусируясь только на содержимом. Например, если вы выделили красным ячейки с отрицательными значениями через Главная → Условное форматирование, то при попытке отфильтровать их через выпадающий список фильтра опция "По цвету" будет недоступна. Это не ошибка программы, а особенность логики фильтрации: Excel различает цвета, применённые через условное форматирование, и цвета, назначенные вручную (инструмент "Заливка").
Решение зависит от способа окраски ячеек. Для ручной заливки подойдёт встроенный фильтр по цвету, а для условного форматирования потребуется обходной путь: либо добавление вспомогательного столбца с формулой, либо использование макросов VBA. Ниже разобраны все актуальные методы с учётом версий Excel 2010–2023, включая нюансы для Excel Online и MacOS.
1. Стандартный фильтр по цвету заливки (для ручного форматирования)
Если цвет ячеек был назначен через инструмент Заливка (кнопка "Цвет заливки" на вкладке Главная), то фильтрация доступна без дополнительных действий. Этот метод работает во всех версиях Excel, включая Excel 365 и Excel 2019.
Алгоритм:
- Выделите диапазон данных (включая заголовки столбцов).
- Перейдите на вкладку
Данные→ нажмитеФильтр(или используйте горячие клавиши Ctrl+Shift+L). - Щёлкните по стрелке фильтра в заголовке столбца, где нужно отфильтровать по цвету.
- В выпадающем меню выберите
Фильтр по цвету→Фильтр по цвету ячейки. - Отметьте галочкой нужный цвет из палитры.
⚠️ Внимание: Если опция Фильтр по цвету ячейки неактивна (серого цвета), это означает, что в выделенном диапазоне нет ячеек с ручной заливкой. Проверьте:
- 🔍 Не применено ли условное форматирование (см. следующий раздел).
- 🎨 Не используется ли тема оформления документа (цвета из тем не поддерживаются фильтрацией).
- 📊 Не скрыты ли столбцы с цветными ячейками.
2. Фильтрация по цвету условного форматирования
Условное форматирование (например, правила типа "Значение меньше 0 → красный фон") не поддерживается стандартным фильтром по цвету. Здесь требуется обходной путь: создание вспомогательного столбца, который будет дублировать цвет ячейки в виде текстового или числового кода.
Шаги для Excel 2016 и новее:
- Добавьте справа от таблицы новый столбец (например, "Цвет").
- В первой ячейке столбца введите формулу, проверяющую цвет:
Примечание: Функция=ПОЛУЧИТЬ.ЦВЕТ.ЯЧЕЙКИ(A2)ПОЛУЧИТЬ.ЦВЕТ.ЯЧЕЙКИдоступна только в Excel 365 и Excel 2021. Для старых версий используйте VBA (см. раздел 4). - Растяните формулу на весь столбец.
- Примените стандартный фильтр к новому столбцу по числовому значению цвета.
Для условного форматирования с несколькими цветами (например, зелёный/жёлтый/красный) используйте вложенные функции ЕСЛИ:
=ЕСЛИ(A2<0; "Красный"; ЕСЛИ(A2=0; "Жёлтый"; "Зелёный"))
Добавлен вспомогательный столбец|Формула проверяет все условия окраски|Фильтр применён к вспомогательному столбцу|Проверены скрытые строки/столбцы-->
3. Использование VBA для фильтрации по цвету
Если вам нужно отфильтровать данные по цвету, назначенному через условное форматирование, в Excel 2010–2019, единственный надёжный способ — макрос на VBA. Ниже приведён код, который фильтрует строки по цвету заливки в указанном столбце.
Инструкция:
- Нажмите Alt+F11, чтобы открыть редактор VBA.
- Вставьте новый модуль:
Вставка → Модуль. - Скопируйте следующий код:
Sub FilterByCellColor()Dim rng As Range, cell As Range
Dim colorToFilter As Long
Dim ws As Worksheet
' Укажите лист и диапазон
Set ws = ActiveSheet
Set rng = ws.Range("A1:D100") ' Измените на ваш диапазон
' Укажите цвет для фильтра (например, RGB красного: 255)
colorToFilter = RGB(255, 0, 0) ' Красный
' Скрываем строки, где цвет не совпадает
For Each cell In rng
If cell.Interior.Color <> colorToFilter Then
cell.EntireRow.Hidden = True
End If
Next cell
End Sub
- Запустите макрос клавишей F5.
⚠️ Внимание: Макрос скрывает строки, а не применяет фильтр через меню Данные. Чтобы вернуть все строки, используйте:
Sub ShowAllRows()
Cells.EntireRow.Hidden = False
End Sub
Как узнать RGB-код цвета ячейки?
Чтобы точно указать цвет в макросе, получите его RGB-код:
1. Выделите цветную ячейку.
2. Запустите макрос:
Sub GetCellColor()
MsgBox "RGB: " & Selection.Interior.Color
End Sub
3. Скопируйте число из всплывающего окна и используйте его в коде фильтрации (например, colorToFilter = 255 для красного).
4. Альтернативные методы без VBA
Если VBA недоступен (например, в Excel Online), воспользуйтесь одним из этих способов:
| Метод | Подходит для | Ограничения |
|---|---|---|
Поиск по цвету (Ctrl+F → Формат → выберите цвет) |
Ручная заливка | Не фильтрует, а только находит ячейки |
Сортировка по цвету (Данные → Сортировка → добавьте уровень по цвету) |
Ручная заливка | Не работает с условным форматированием |
| Power Query (для Excel 2016+) | Условное форматирование | Требует преобразование данных в таблицу |
Для Power Query:
- Выделите таблицу →
Данные → Из таблицы/диапазона. - В редакторе Power Query добавьте пользовательский столбец с формулой:
= if [ВашСтолбец] < 0 then "Красный" else "Зелёный" - Фильтруйте по новому столбцу после загрузки данных обратно в Excel.
5. Особенности фильтрации в Excel для Mac и Online
В Excel для Mac и Excel Online фильтрация по цвету работает с ограничениями:
- 🍎 MacOS: Фильтр по цвету ячейки доступен только для ручной заливки. Условное форматирование не поддерживается даже через VBA (из-за особенностей реализации AppleScript).
- ☁️ Excel Online: Функция
ПОЛУЧИТЬ.ЦВЕТ.ЯЧЕЙКИи макросы VBA недоступны. Используйте вспомогательные столбцы с формулами, проверяющими условия окраски.
Обходной путь для Excel Online:
- Создайте правило условного форматирования с формулой (например,
=A1<0для красного цвета). - Добавьте вспомогательный столбец с формулой:
=ЕСЛИ(ИСТИНА; "Цвет_" & ЕСЛИ(A1<0; "Красный"; "Зелёный")) - Отфильтруйте таблицу по текстовому значению в новом столбце.
6. Частые ошибки и их решения
Проблемы при фильтрации по цвету обычно связаны с неверным определением типа окраски или диапазона. Рассмотрим типичные случаи:
⚠️ Внимание: Если после применения фильтра отображаются пустые строки, проверьте:
- 🔄 Не включён ли фильтр по другому столбцу (снимите все фильтры через
Данные → Очистить). - 📏 Не выходит ли диапазон фильтра за пределы цветных ячеек (расширьте диапазон или добавьте заголовки).
- 🎨 Не используется ли градиентная заливка (фильтр по цвету работает только с однотонной заливкой).
| Ошибка | Причина | Решение |
|---|---|---|
| Опция "Фильтр по цвету" неактивна | Цвет применён через условное форматирование | Используйте вспомогательный столбец или VBA |
| Фильтр игнорирует часть ячеек | Цвет назначен через "Темы" (Разметка страницы → Темы) |
Переназначьте цвет вручную через "Заливка" |
| Макрос не находит цвет | Цвет задан через Conditional Formatting (условное форматирование) |
Используйте DisplayFormat.Interior.Color в VBA |
FAQ: Ответы на частые вопросы
Можно ли отфильтровать по цвету шрифта, а не ячейки?
Да, для этого:
- Примените фильтр к столбцу (
Данные → Фильтр). - В выпадающем меню выберите
Фильтр по цвету→Фильтр по цвету текста.
Для условного форматирования шрифта используйте вспомогательный столбец с функцией ПОЛУЧИТЬ.ЦВЕТ.ШРИФТА (только в Excel 365).
Почему после фильтрации пропали данные?
Вероятные причины:
- Скрыты строки (проверьте через
Главная → Формат → Скрыть/отобразить → Отобразить строки). - Фильтр применён к неправильному диапазону (расширьте его или сбросьте фильтр).
- В макросе VBA указан неверный цвет (проверьте код через
MsgBox Selection.Interior.Color).
Как отфильтровать по цвету в сводной таблице?
Сводные таблицы не поддерживают фильтрацию по цвету ячеек. Альтернативы:
- Добавьте в исходные данные столбец с текстовой меткой цвета (например, "Красный", "Зелёный").
- Создайте сводную таблицу на основе этого столбца.
- Фильтруйте по текстовому полю.
Работает ли фильтр по цвету в Google Таблицах?
В Google Sheets нет встроенной фильтрации по цвету, но можно использовать:
- Функцию
GET.CELL: Создайте скрипт Apps Script, который вернёт цвет ячейки. - Условное форматирование + фильтр: Добавьте вспомогательный столбец с формулой, проверяющей условие окраски.
Пример формулы для вспомогательного столбца:
=ARRAYFORMULA(IF(A2:A<0; "Красный"; "Зелёный"))
Можно ли сохранить фильтр по цвету при копировании данных?
Нет, фильтр по цвету — это временное состояние таблицы. Чтобы сохранить результат:
- Скопируйте отфильтрованные данные (Ctrl+C).
- Вставьте их как значения (Ctrl+Alt+V → выберите "Значения").
- Удалите исходные данные или скрытые строки.