Как в Excel отобразить только строки с цветовой заливкой: пошаговое руководство

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

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

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

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

Способ 1: Фильтр по цвету ячейки — где искать скрытую кнопку

Самый простой метод — использовать встроенный фильтр по цвету, но он спрятан так глубоко, что многие пользователи даже не подозревают о его существовании. Вот как его найти:

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

Важно: этот метод работает только для текущего столбца. Если цвет заливки применён ко всей строке, придётся повторить фильтрацию для каждого столбца отдельно — или использовать способ №2.

📊 Как часто вы используете цветовую заливку в Excel?
Постоянно (для категоризации данных)
Иногда (для выделения важного)
Рядом (только по требованию начальства)
Никогда (предпочитаю другие методы)

Ещё один нюанс: если в вашей таблице используется условное форматирование (например, красный фон для отрицательных чисел), фильтр по цвету его не увидит. В этом случае поможет только VBA-скрипт (способ №3).

⚠️ Внимание: Фильтр по цвету ячейки не работает в Excel Online и мобильной версии приложения. Для этих платформ используйте условное форматирование (способ №2).

Способ 2: Условное форматирование + вспомогательный столбец

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

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

    где A2 — адрес первой ячейки в строке (можно заменить на любую ячейку строки).

  3. Нажмите F2, затем Ctrl+Shift+Enter, чтобы преобразовать формулу в массивную.
  4. Протяните формулу на все строки таблицы.
  5. Теперь отфильтруйте таблицу по новому столбцу, выбрав нужный код цвета (например, 44 для красного).

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

ЦветКодПример
Красный3
Зелёный4
Синий5
Жёлтый6
Без заливки0

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

Выделить диапазон данных с заголовками|

Добавить вспомогательный столбец|

Ввести формулу GET.CELL в первую ячейку|

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

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

Способ 3: VBA-макрос для автоматической фильтрации

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

Sub FilterByColor()

Dim ws As Worksheet

Dim rng As Range

Dim colorIndex As Long

Dim cell As Range

Dim firstRow As Long

' Укажите лист и диапазон

Set ws = ActiveSheet

Set rng = ws.UsedRange

firstRow = rng.Row

' Укажите индекс цвета (например, 6 для жёлтого)

colorIndex = 6

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

If ws.AutoFilterMode Then ws.AutoFilterMode = False

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

rng.AutoFilter Field:=1, Criteria1:=xlFilterCellColor, Operator:=xlFilterCellColor, Color:=colorIndex

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

For Each cell In rng.Columns(1).Cells

If cell.Row > firstRow And cell.Interior.ColorIndex <> colorIndex Then

cell.EntireRow.Hidden = True

Else

cell.EntireRow.Hidden = False

End If

Next cell

End Sub

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Измените colorIndex на нужный (см. таблицу кодов цветов выше).
  4. Закройте редактор и запустите макрос через Alt+F8.

Критическая деталь: макрос скрывает строки физически (а не фильтрует), поэтому после работы не забудьте вернуть отображение всех строк через Главная → Формат → Скрыть/отобразить → Отобразить строки.

⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm. Если ваш файл сохранён как .xlsx, Excel заблокирует выполнение кода. Сохраните копию файла в формате с поддержкой макросов перед использованием.

Сравнение методов: какой выбрать для вашей задачи

Каждый из трёх способов имеет свои сильные и слабые стороны. Выбор зависит от ваших целей:

  • 🔍 Фильтр по цвету: Лучше для разовых задач. Быстро, не требует настройки, но не сохраняет фильтры и не работает с условным форматированием.
  • 📊 Условное форматирование + вспомогательный столбец: Универсально, работает везде (включая Excel Online), но требует предварительной подготовки. Подходит для регулярного использования.
  • VBA-макрос: Самый мощный инструмент для автоматизации. Идеален, если фильтрация по цвету нужна часто. Минус — требует знаний VBA и настройки макросов.

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

КритерийФильтр по цветуВспомогательный столбецVBA-макрос
Скорость настройки⭐⭐⭐⭐⭐⭐⭐
Работа с условным форматированием❌ Нет⚠️ Частично✅ Да
Совместимость с Excel Online❌ Нет✅ Да❌ Нет
Автоматизация❌ Нет⚠️ Возможна✅ Полная

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

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

  • 🎨 Цвет не отображается в списке фильтра: Убедитесь, что цвет применён ко всей ячейке, а не к её части (например, к шрифту). Также проверьте, что фильтр включён для правильного столбца.
  • 🔄 Фильтр сбрасывается после сохранения: Это нормальное поведение Excel. Чтобы сохранить фильтр, используйте вспомогательный столбец или макрос.
  • 📉 Макрос не находит цвет: Проверьте, что colorIndex в коде соответствует реальному индексу цвета. Используйте запись макроса (Вид → Макросы → Записать макрос), чтобы узнать точный индекс.
  • 🔍 Не видно строк после фильтрации: Возможно, все строки скрыты. Нажмите Ctrl+A, затем правой кнопкой → Отобразить.

Ещё одна распространённая проблема — конфликт с условным форматированием. Если цвет ячейки задаётся формулой (например, =A1<0 для красного фона), стандартный фильтр его не увидит. В этом случае:

  1. Замените условное форматирование на ручную заливку (если возможно).
  2. Или используйте VBA-макрос, который проверяет .DisplayFormat.Interior.Color вместо .Interior.Color.

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

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

Для фильтрации по нескольким цветам:

  1. Создайте вспомогательный столбец с формулой GET.CELL (как в способе №2).
  2. Добавьте ещё один столбец с формулой, проверяющей несколько цветов:
    =OR(GET.CELL(38,!A2)=6, GET.CELL(38,!A2)=3)

    где 6 и 3 — индексы нужных цветов.

  3. Отфильтруйте таблицу по второму столбцу, оставив только строки с ИСТИНА.

Для комбинированной фильтрации (цвет + значение):

  1. Используйте вспомогательный столбец с формулой, объединяющей оба условия:
    =AND(GET.CELL(38,!A2)=6, B2>100)

    где B2 — ячейка с числовым значением.

  2. Отфильтруйте таблицу по этому столбцу.

Если вам нужно подсчитать количество строк с определённым цветом, используйте функцию SUMPRODUCT:

=SUMPRODUCT(--(GET.CELL(38, INDIRECT("A" & ROW(A2:A100))) = 6))

Эта формула вернёт количество строк с жёлтой заливкой (индекс 6) в диапазоне A2:A100.

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

Для фильтрации по цвету шрифта используйте тот же метод, но в формуле GET.CELL замените 38 (индекс цвета заливки) на 24 (индекс цвета шрифта). Например:

=GET.CELL(24,!A2)

Это вернёт код цвета текста в ячейке A2.

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

Можно ли отфильтровать строки по цвету в Google Таблицах?

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

=ARRAYFORMULA(IF(REGEXMATCH(ADDRESS(ROW(A2), COLUMN(A2), 4), ".bgcolor\#([0-9A-Fa-f]{6})."), "Цветной", ""))

Эта формула проверяет наличие цветовой заливки в ячейке. После этого можно отфильтровать таблицу по вспомогательному столбцу.

Почему фильтр по цвету не работает в моём Excel 2010?

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

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

Если проблема остаётся, обновите Excel до последней версии или используйте вспомогательный столбец.

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

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

  1. Отфильтруйте данные по цвету.
  2. Скопируйте видимые строки (Ctrl+C).
  3. Вставьте их на новый лист как значения (Специальная вставка → Значения).
  4. Удалите исходные данные или сохраните файл под новым именем.

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

Можно ли отфильтровать строки по градиентной заливке?

Нет, стандартные методы работают только с однотонной заливкой. Для градиента придётся:

  1. Заменить градиент на однотонный цвет (вручную или через макрос).
  2. Использовать условное форматирование с однотонными цветами вместо градиента.

Если градиент задан через условное форматирование, его нельзя отфильтровать без VBA.

Как убрать фильтр по цвету, если Excel завис?

Если Excel перестал реагировать после фильтрации:

  1. Закройте программу через Диспетчер задач (Ctrl+Shift+Esc).
  2. Откройте файл заново — фильтр сбросится автоматически.
  3. Если файл повреждён, восстановите его через Файл → Открыть → Обзор → Выделите файл → Стрелка рядом с "Открыть" → Открыть и восстановить.

Чтобы избежать зависаний, не применяйте фильтр по цвету к диапазонам больше 50 000 строк.