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

Вы когда-нибудь сталкивались с ситуацией, когда в таблице Excel часть данных выделена цветом, и нужно быстро посчитать именно эти ячейки? Например, красным отмечены просроченные заказы, зелёным — выполненные, а жёлтым — в процессе. Вручную пересчитывать сотни строк — не вариант. К сожалению, в стандартном арсенале Excel нет функции вроде =СЧЁТЕСЛИПОЦВЕТУ(), но обойти это ограничение можно несколькими способами.

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

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

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

  • 🔹 Производительность: обработка цветов требует сканирования каждого пикселя ячейки, что замедляло бы работу с большими таблицами.
  • 🔹 Субъективность: один и тот же цвет (например, "светло-голубой") может быть задан разными кодами в RGB или темами оформления.
  • 🔹 Альтернативы: Microsoft предлагает использовать условное форматирование или сводные таблицы для анализа данных без привязки к цветам.

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

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

Способ 1: Фильтрация по цвету (без формул)

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

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

⚠️ Внимание: этот метод не даёт точного числа — только визуальную оценку. Если нужно записать результат в отдельную ячейку, используйте =СЧЁТЗ() для видимого диапазона после применения фильтра.

Способ 2: Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (для цвета шрифта)

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

Формула для подсчёта ячеек с красным текстом в диапазоне A1:A100:

=СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38; A1:A100)=3))

Расшифровка параметров:

  • 🔢 38 — код для цвета шрифта.
  • 🔢 3 — код красного цвета в палитре Excel (для зелёного используйте 4, синего — 5 и т.д.).
Цвет текста Код в ПОЛУЧИТЬ.ЯЧЕЙКУ Пример формулы
Чёрный 1 =СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1:A10)=1))
Красный 3 =СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1:A10)=3))
Зелёный 4 =СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1:A10)=4))
Синий 5 =СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1:A10)=5))

⚠️ Внимание: функция ПОЛУЧИТЬ.ЯЧЕЙКУ работает только как формула массива. В старых версиях Excel (до 2019) её нужно вводить через Ctrl+Shift+Enter. В Excel 365 достаточно просто нажать Enter.

Способ 3: VBA-макрос для подсчёта по цвету фона

Для автоматизации подсчёта ячеек по цвету заполнения придётся использовать VBA. Этот метод универсален и работает во всех версиях Excel, включая Mac. Ниже приведён код, который считает ячейки с указанным цветом в выделенном диапазоне.

Как добавить макрос:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert → Module.
  3. Вставьте следующий код:
Function CountByColor(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

CountByColor = count

End Function

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

  1. Выделите ячейку, в которой хотите увидеть результат.
  2. Введите формулу: =CountByColor(A1:A100; C1), где C1 — ячейка с образцом цвета.
  3. Нажмите Enter.

Сохраните файл как .xlsm (с поддержкой макросов)|Включите макросы в настройках безопасности|Проверьте, что цвет образца (C1) точно совпадает с цветом ячеек в диапазоне|Не используйте merged cells (объединённые ячейки) в диапазоне подсчёта-->

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

Код для ColorIndex вместо RGB

Function CountByColorIndex(rng As Range, colorIndex As Integer) As Long

Dim cl As Range

Dim count As Long

count = 0

For Each cl In rng

If cl.Interior.ColorIndex = colorIndex Then

count = count + 1

End If

Next cl

CountByColorIndex = count

End Function

Пример использования: =CountByColorIndex(A1:A100; 3) (где 3 — индекс красного цвета).

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

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

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

  1. Добавьте справа от ваших данных новый столбец (например, B).
  2. В первой ячейке столбца (B1) введите формулу:
    =ЕСЛИ(И(A1<>""; ЦВЕТ(A1)=3); 1; 0)
    Замените 3 на код нужного цвета (см. таблицу в Способе 2).
  3. Растяните формулу на весь диапазон.
  4. Используйте =СУММ(B1:B100), чтобы посчитать количество "1" (т.е. цветных ячеек).

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

🔹 Минусы: нужно вручную обновлять формулы при изменении данных, а функция ЦВЕТ() — пользовательская и требует предварительной настройки (см. спойлер ниже).

Как добавить функцию ЦВЕТ() в Excel

1. Откройте редактор VBA (Alt+F11).

2. Вставьте новый модуль (Insert → Module).

3. Добавьте код:

Function ЦВЕТ(rng As Range) As Integer

ЦВЕТ = rng.Font.ColorIndex

End Function

4. Сохраните файл как .xlsm и используйте функцию в таблице.

Способ 5: Power Query (для Excel 2016 и новее)

Единственный метод, который корректно обрабатывает цвета из условного форматирования — использование Power Query. Этот инструмент доступен в Excel 2016+ и Excel 365, а также в Power BI. Он позволяет преобразовать данные так, чтобы цвет стал отдельным столбцом, который затем можно анализировать.

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

  1. Выделите ваш диапазон данных и перейдите на вкладку ДанныеИз таблицы/диапазона (или Get Data → From Table/Range).
  2. В открывшемся редакторе Power Query добавьте пользовательский столбец:
    = if [ВашСтолбец] <> null then Text.From(Value.Type([ВашСтолбец])) else null
    Этот шаг нужен для фиксации структуры данных.
  3. Добавьте ещё один столбец с формулой для извлечения цвета:
    = try Record.Field(Excel.CurrentWorkbook(){[Name="ВашаТаблица"]}[Content]{0}[ВашСтолбец], "Format")[Fill][BackgroundColor] otherwise null
  4. Замените ВашаТаблица и ВашСтолбец на реальные имена.
  5. Нажмите Close & Load, чтобы вернуть данные в Excel.
  6. Теперь используйте СЧЁТЕСЛИ для нового столбца с цветами.

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

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

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

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

🔹 Для разовых задач подойдёт фильтрация или ПОЛУЧИТЬ.ЯЧЕЙКУ.

🔹 Для регулярного использования лучше настроить VBA или Power Query.

🔹 Для облачных версий Excel (Online, Mac) остаётся только фильтрация или вспомогательный столбец.

FAQ: Частые вопросы о подсчёте по цвету в Excel

Можно ли посчитать ячейки по цвету без VBA?

Да, но с ограничениями. Используйте фильтрацию (Способ 1) или функцию ПОЛУЧИТЬ.ЯЧЕЙКУ (Способ 2) для цвета текста. Для цвета фона без VBA подойдёт только вспомогательный столбец (Способ 4), но он требует предварительной настройки пользовательской функции.

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

Наиболее вероятные причины:

  • 🔸 Цвета назначены через условное форматирование — макрос сравнивает RGB-значения, которые могут отличаться от визуального цвета.
  • 🔸 В диапазоне есть объединённые ячейки (merged cells) — они обрабатываются как одна.
  • 🔸 Цвет образца (ячейка C1 в примере) не совпадает с цветами в диапазоне. Проверьте код цвета через VBA:
    MsgBox Range("A1").Interior.Color
Как посчитать ячейки с градиентной заливкой?

Стандартные методы не работают с градиентами. Единственный вариант — VBA-макрос, который проверяет тип заливки:

Function CountGradient(rng As Range) As Long

Dim cl As Range, count As Long

For Each cl In rng

If cl.Interior.Pattern = xlPatternLinearGradient Then

count = count + 1

End If

Next cl

CountGradient = count

End Function

Используйте как: =CountGradient(A1:A100).

Можно ли автоматически обновлять подсчёт при изменении цветов?

Да, но только если использовать:

  • 🔸 VBA-макрос с событием (например, Worksheet_Change), который будет пересчитывать значения при изменении данных.
  • 🔸 Power Query с последующим обновлением запроса (Данные → Обновить все).

Фильтрация и ПОЛУЧИТЬ.ЯЧЕЙКУ не обновляются автоматически.

Есть ли добавки (add-ins) для работы с цветами в Excel?

Да, несколько популярных надстроек решают эту задачу:

  • 🔹 Kutools for Excel — имеет функцию Count by Color с визуальным интерфейсом.
  • 🔹 Ablebits — включает инструменты для анализа цветов и условного форматирования.
  • 🔹 ASAP Utilities — бесплатная надстройка с опциями для работы с цветами.

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