Как в Excel сделать выборку по цвету ячейки: от фильтра до VBA

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

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

1. Ручной фильтр по цвету: быстрый способ для небольших таблиц

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

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

Этот метод имеет два ключевых ограничения:

  • 🔴 Не работает с условным форматированием — фильтр видит только ручную заливку ячеек.
  • 🔴 Не сохраняет результат — после снятия фильтра данные вернутся в исходное состояние.

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

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

2. Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (GET.CELL): скрытый инструмент для формул

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

Алгоритм использования:

  1. Выделите ячейку, где будет результат (например, A1).
  2. Перейдите на вкладку ФормулыДиспетчер именСоздать.
  3. В поле Имя введите ЦветЯчейки, в поле Диапазон укажите =ПОЛУЧИТЬ.ЯЧЕЙКУ(38;!A1) (где 38 — код цвета заливки).
  4. Теперь в любой ячейке можно использовать формулу =ЦветЯчейки, чтобы получить числовой код цвета.

Код функции GET.CELL Значение Пример возвращаемого значения
38 Цвет заливки ячейки 16777215 (белый)
24 Цвет шрифта 0 (чёрный)
63 Индекс цвета (для палитры Excel) 5 (синий)

⚠️ Внимание: В Excel 365 и онлайн-версии функция ПОЛУЧИТЬ.ЯЧЕЙКУ может возвращать #Н/Д для динамических массивов. В этом случае используйте альтернативный метод с VBA (см. раздел 4).

=ТЕКСТ(ЦветЯчейки;"[<10000000]00000000;[>=10000000]00000000").

Результат можно проверить на сайтах вроде color-hex.com-->

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

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

Пример для подсчёта ячеек красного цвета (RGB(255,0,0)):

  1. Добавьте новый столбец рядом с данными.
  2. В первой ячейке столбца введите:
    =ЕСЛИ(И(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1)=16711680);1;0)

    (где 16711680 — код красного цвета).

  3. Растяните формулу на весь диапазон.
  4. Используйте СУММ или ФИЛЬТР по вспомогательному столбцу.

Для условного форматирования формула будет сложнее:

=ЕСЛИ(ИЛИ(НЕОШИБКА(ПОИСК("красный";ПОЛУЧИТЬ.ЯЧЕЙКУ(63;A1);1)));1;0)

Здесь мы проверяем название цвета в палитре Excel (индекс 63).

  • 🟢 Плюсы: Работает с условным форматированием, не требует VBA.
  • 🔴 Минусы: Нужно вручную указывать коды цветов для каждого оттенка.

4. Макрос VBA: автоматизация для больших данных

Для обработки тысяч строк с цветовым форматированием напишите простой макрос. Он скопирует данные из ячеек заданного цвета в новый лист или диапазон.

Пример кода для копирования строк с красными ячейками в столбце A:

Sub CopyByColor()

Dim wsSource As Worksheet, wsDest As Worksheet

Dim rng As Range, cell As Range, i As Long

Dim colorToFind As Long

' Укажите цвет (красный = RGB(255,0,0) = 16711680)

colorToFind = 16711680

Set wsSource = ActiveSheet

Set wsDest = Worksheets.Add

wsDest.Name = "Результаты по цвету"

' Заголовки столбцов

wsSource.Rows(1).Copy wsDest.Rows(1)

i = 2 ' Начинаем со второй строки

For Each cell In wsSource.Range("A2:A" & wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row)

If cell.Interior.Color = colorToFind Then

cell.EntireRow.Copy wsDest.Rows(i)

i = i + 1

End If

Next cell

MsgBox "Готово! Скопировано " & i - 2 & " строк.", vbInformation

End Sub

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

  • 🔹 Измените colorToFind на нужный цвет (узнать код можно через ПОЛУЧИТЬ.ЯЧЕЙКУ(38)).
  • 🔹 Замените "A2:A" на свой диапазон (например, "B2:B").
  • 🔹 Добавьте фильтрацию по нескольким цветам через OR.

Как узнать код цвета ячейки без формул?

Откройте редактор VBA (Alt+F11), в окне Immediate (Ctrl+G) введите:

?ActiveCell.Interior.Color

Нажмите Enter — в ответ получите числовой код цвета активной ячейки.

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

5. Power Query: выборка по цвету без VBA

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

  1. Добавьте столбец с формулой =ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1) (как в разделе 2).
  2. Загрузите данные в Power Query (Данные → Из таблицы/диапазона).
  3. Отфильтруйте новый столбец по коду цвета.
  4. Удалите вспомогательный столбец перед загрузкой результата обратно в Excel.

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

Добавьте столбец с кодом цвета|Проверьте, что все ячейки имеют ручную заливку (не условное форматирование)|Загрузите данные в Power Query|Отфильтруйте по коду цвета|Удалите вспомогательный столбец перед выводом-->

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

Метод Работает с условным форматированием Требует VBA Сохраняет результат Подходит для больших данных
Ручной фильтр ❌ Нет ❌ Нет ❌ Нет ❌ Нет
ПОЛУЧИТЬ.ЯЧЕЙКУ ✅ Да ❌ Нет ✅ Да ⚠️ Ограничено
VBA-макрос ✅ Да ✅ Да ✅ Да ✅ Да
Power Query ✅ Да (с вспомогательным столбцом) ❌ Нет ✅ Да ✅ Да

Для разовых задач подойдёт ручной фильтр. Если нужно анализировать данные по цвету регулярно — используйте ПОЛУЧИТЬ.ЯЧЕЙКУ или Power Query. Для автоматизации обработки тысяч строк оптимален VBA.

FAQ: Частые вопросы по выборке по цвету

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

Да, для этого в функции ПОЛУЧИТЬ.ЯЧЕЙКУ используйте код 24 вместо 38. Например:

=ПОЛУЧИТЬ.ЯЧЕЙКУ(24;A1)

вернёт код цвета шрифта. В VBA проверяйте свойство cell.Font.Color.

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

Стандартный фильтр Excel распознаёт только ручную заливку. Для условного форматирования используйте методы с ПОЛУЧИТЬ.ЯЧЕЙКУ или VBA (в макросе проверяйте cell.DisplayFormat.Interior.Color вместо cell.Interior.Color).

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

После применения фильтра выделите диапазон и нажмите Alt+; (выделение видимых ячеек), затем Ctrl+C для копирования. Альтернативно используйте VBA:

Selection.SpecialCells(xlCellTypeVisible).Copy

Можно ли сделать выборку по цвету в Google Sheets?

В Google Таблицах нет прямого аналога ПОЛУЧИТЬ.ЯЧЕЙКУ, но можно использовать скрипты на Google Apps Script. Пример кода:

function getBackgroundColor() {

return SpreadsheetApp.getActiveSheet().getActiveCell().getBackground();

}

Результат вернёт цвет в формате #ffffff.

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

Создайте настраиваемый вид (Вид → Настраиваемые представления) после применения фильтра. Либо запишите макрос (Вид → Макросы → Записать макрос), который повторяет ваши действия.