Как в Excel посчитать количество залитых цветом ячеек: все работающие методы

Подсчёт ячеек с цветной заливкой в Microsoft Excel — задача, с которой сталкиваются пользователи при анализе отчётов, чек-листов или визуально структурированных таблиц. На первый взгляд кажется, что достаточно просто выделить цветные ячейки и посмотреть их количество в строке состояния. Однако стандартные функции вроде СЧЁТЕСЛИ или СЧЁТЗ не учитывают форматирование, а только содержимое. Это создаёт проблему: как автоматизировать подсчёт, если данные не имеют текстовых или числовых маркеров, а отличаются лишь цветом фона?

В этой статье мы разберём 5 рабочих методов — от элементарных (для новичков) до продвинутых (с использованием VBA). Вы узнаете, как обойти ограничения Excel, какие инструменты скрыты в меню программы, и почему иногда проще использовать Power Query, чем писать макрос. Особое внимание уделим нюансам: например, почему функция ПОИСКПОЗ не подходит для этой задачи, или как избежать ошибок при копировании таблиц с сохранением форматирования.

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

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

Метод 1: Ручной подсчёт через фильтр по цвету

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

Чтобы воспользоваться этим методом:

  1. Выделите диапазон ячеек, в котором нужно посчитать цветные.
  2. Перейдите на вкладку ГлавнаяСортировка и фильтрФильтр.
  3. Нажмите на стрелочку фильтра в заголовке столбца и выберите Фильтр по цветуЦвет заливки → нужный оттенок.
  4. Excel отобразит только ячейки выбранного цвета. Их количество будет показано в строке состояния (внизу окна, справа).

Плюсы: не требует формул, работает во всех версиях Excel (включая Excel Online).

Минусы: не автоматизируется, при изменении данных фильтр сбрасывается.

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

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

Нюанс: если в таблице используются условное форматирование (цвет меняется по правилу), фильтр по цвету может не сработать. В этом случае переходите к следующим методам.

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

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

Алгоритм действий:

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

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

Метод 3: VBA-макрос для автоматизации подсчёта

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

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль (Insert → Module) и скопируйте туда код:
    Function CountColorCells(rng As Range, color As Range) As Long
    

    Dim cl As Range

    Dim count As Long

    count = 0

    For Each cl In rng

    If cl.Interior.Color = color.Interior.Color Then

    count = count + 1

    End If

    Next cl

    CountColorCells = count

    End Function

  3. Закройте редактор. Теперь в Excel можно использовать функцию =CountColorCells(A1:A10; B1), где:
    • A1:A10 — диапазон для подсчёта,
    • B1 — ячейка с образцом цвета.

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

Сохраните файл как .xlsm (с поддержкой макросов)|Включите макросы в настройках безопасности (Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы)|Проверьте, что в ячейке-образце нет условного форматирования

-->

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

Метод 4: Power Query для динамических таблиц

Power Query (доступен в Excel 2016 и новее) позволяет преобразовывать данные, включая анализ форматирования. Этот метод подходит для динамических таблиц, где цвета могут изменяться по правилам условного форматирования.

Пошаговая инструкция:

  1. Выделите диапазон и преобразуйте его в таблицу (Ctrl + T).
  2. Перейдите на вкладку ДанныеИз таблицы/диапазона (группа Получить и преобразовать).
  3. В редакторе Power Query добавьте пользовательский столбец:
    = if [Column1] = null then null else if Value.Is(Value.FromText([Column1]), type color) then 1 else 0
    Замените [Column1] на имя вашего столбца.
  4. Отфильтруйте новый столбец по значению 1 и посчитайте строки.

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

Метод Сложность Автоматизация Работает с условным форматированием
Фильтр по цвету Нет Нет
ПОЛУЧИТЬ.ЯЧЕЙКУ ⭐⭐⭐ Да Нет
VBA-макрос ⭐⭐⭐⭐ Да Да (с доработками)
Power Query ⭐⭐⭐⭐ Да Частично

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

Если цвета в таблице задаются через условное форматирование, можно обойтись без VBA. Создайте правило, которое будет дублировать цвет в отдельном столбце текстовым маркером (например, "Красный", "Зелёный"), а затем используйте СЧЁТЕСЛИ.

Пример настройки:

  1. Добавьте справа от таблицы вспомогательный столбец.
  2. Создайте правило условного форматирования для исходного диапазона (например, если значение > 100, заливка красная).
  3. Во вспомогательном столбце используйте формулу:
    =ЕСЛИ(И(A1>100); "Красный"; ЕСЛИ(И(A1<50); "Зелёный"; "Жёлтый"))
  4. Теперь подсчёт ведётся по текстовому признаку: =СЧЁТЕСЛИ(B:B; "Красный").

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

Минус: требует дублирования данных и ручной настройки правил.

Типичные ошибки и как их избежать

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

🔹 Ошибка 1: Функция ПОЛУЧИТЬ.ЯЧЕЙКУ возвращает #ЗНАЧ!.

⚠️ Внимание: это происходит, если в настройках Excel отключена поддержка макросов 4.0. Включите её в Файл → Параметры → Формулы → Работа с формулами.

🔹 Ошибка 2: VBA-макрос не видит цвета в скопированной таблице.

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

🔹 Ошибка 3: Power Query не обновляет данные после изменения цветов.

🔹 Решение: Обновите запрос вручную (Данные → Обновить все) или настройте автоматическое обновление при открытии файла.

🔹 Ошибка 4: Фильтр по цвету не показывает все ячейки.

🔹 Решение: Убедитесь, что в таблице нет скрытых строк или применённых других фильтров.

FAQ: Частые вопросы о подсчёте цветных ячеек

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

Нет, стандартные методы (включая VBA) работают только с однотонной заливкой. Градиент рассматривается как отсутствие цвета. Обходной путь — использовать условное форматирование с однотонными цветами вместо градиента.

Почему макрос считает не все ячейки?

Вероятно, в таблице используются близкие оттенки (например, RGB(255, 0, 0) и RGB(254, 0, 0)). Макрос сравнивает точные значения. Решение: округлите коды цветов в скрипте или используйте диапазон значений.

Как посчитать цветные ячейки в Google Sheets?

В Google Таблицах нет встроенных инструментов для этой задачи. Используйте скрипт Apps Script:

function countColoredCells() {

const sheet = SpreadsheetApp.getActiveSheet();

const range = sheet.getDataRange();

const colors = range.getBackgrounds();

let count = 0;

const targetColor = "#ffff00"; // Жёлтый цвет

colors.forEach(row => row.forEach(cell => {

if (cell === targetColor) count++;

}));

Logger.log(count);

}

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

Да, для этого модифицируйте VBA-макрос, заменив Interior.Color на Font.Color. Пример:

If cl.Font.Color = color.Font.Color Then count = count + 1

Почему после сохранения файла цвета сбиваются?

Это происходит при сохранении в формате .xlsx (без макросов) или при открытии в старых версиях Excel. Используйте формат .xlsm и проверяйте совместимость с вашей версией программы.