Подсчёт цветных ячеек в Microsoft Excel — задача, с которой сталкиваются пользователи при анализе данных, визуализации отчётов или проверке условного форматирования. На первый взгляд кажется, что достаточно просто выделить диапазон и получить количество, но стандартные функции COUNTIF или COUNTA не работают с цветами фона. Почему? Потому что Excel хранит информацию о цвете ячейки отдельно от её содержимого, и для доступа к этим данным требуются специальные методы.
Многие пытаются решить проблему вручную — пересчитывая ячейки визуально или присваивая им условные метки, но это неэффективно при больших объёмах данных. К счастью, есть как минимум 5 проверенных способов автоматизировать процесс: от использования встроенных функций с условным форматированием до написания макросов на VBA. В этой статье мы разберём каждый метод с примерами, нюансами и ограничениями, чтобы вы могли выбрать оптимальный вариант для своей задачи.
Особенность работы с цветами в Excel заключается в том, что программа не предоставляет прямой функции для их подсчёта. Это связано с архитектурой файлов .xlsx: цвет ячейки — это свойство её формата, а не значения. Поэтому стандартные математические или логические функции просто "не видят" эту информацию. Однако обходные пути существуют, и некоторые из них удивляют своей простотой.
═══
1. Способ: Условное форматирование + вспомогательный столбец
Самый доступный метод для пользователей, не знакомых с программированием, — использование условного форматирования в комбинации со вспомогательным столбцом. Суть подхода: создать правило, которое будет автоматически проставлять в соседней ячейке метку (например, "1"), если исходная ячейка окрашена в нужный цвет. Затем остаётся лишь подсчитать количество таких меток стандартной функцией SUM.
Алгоритм действий:
- Добавьте справа от вашего диапазона вспомогательный столбец (например,
B, если данные вA). - Выделите первую ячейку вспомогательного столбца (например,
B1). - Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите тип правила
Использовать формулу для определения форматируемых ячеек. - Введите формулу, проверяющую цвет соседней ячейки (об этом ниже).
- Задайте формат для ячейки (например, заполнение чёрным цветом и белым текстом "1").
- Растяните правило на весь вспомогательный столбец.
- Подсчитайте сумму значений во вспомогательном столбце.
Ключевой момент — формула для проверки цвета. К сожалению, Excel не позволяет напрямую сравнить цвет ячейки с образцом, но можно использовать функцию GET.CELL через именованный диапазон. Для этого:
- Нажмите
Формулы → Диспетчер имён → Создать. - В поле
ИмявведитеЦветЯчейки. - В поле
Диапазонвведите формулу:=GET.CELL(38,!A1)где
38— код свойства цвета фона, а!A1— относительная ссылка на ячейку слева от текущей. - Теперь во вспомогательном столбце используйте формулу:
=IF(ЦветЯчейки=3, 1, 0)где
3— код красного цвета (коды других цветов см. в таблице ниже).
| Цвет | Код | Пример формулы |
|---|---|---|
| Красный | 3 | =IF(ЦветЯчейки=3,1,0) |
| Зелёный | 44 | =IF(ЦветЯчейки=44,1,0) |
| Синий | 5 | =IF(ЦветЯчейки=5,1,0) |
| Жёлтый | 6 | =IF(ЦветЯчейки=6,1,0) |
| Без заливки | 0 | =IF(ЦветЯчейки=0,1,0) |
После применения формулы к всему диапазону остаётся просуммировать значения во вспомогательном столбце:
=SUM(B1:B100)
⚠️ Внимание: Этот метод работает только для цветов из стандартной палитры Excel. Если вы используете пользовательские цвета (через Другие цвета), их коды будут другими, и потребуется дополнительная настройка.
═══
2. Способ: Функция SUBTOTAL с фильтром по цвету
Менее известный, но эффективный приём — использование функции SUBTOTAL в сочетании с фильтром по цвету. Этот метод подходит, если вам нужно быстро посчитать окрашенные ячейки в отфильтрованном диапазоне (например, в сводной таблице или после применения автофильтра).
Инструкция:
- Выделите диапазон с данными (включая заголовки).
- Нажмите
Данные → Фильтр(илиCtrl+Shift+L). - Щёлкните по стрелке фильтра в заголовке столбца и выберите
Фильтр по цвету → [нужный цвет]. - Внизу таблицы добавьте строку с функцией:
=SUBTOTAL(103, A2:A100)где
103— код функцииСЧЁТЗ(подсчёт непустых ячеек), аA2:A100— ваш диапазон.
Преимущество этого способа в том, что SUBTOTAL автоматически учитывает только видимые ячейки после фильтрации. Таким образом, вы получаете количество ячеек именно того цвета, который отображается на экране.
Ограничения:
- 🔴 Работает только с данными, к которым применён фильтр.
- 🔴 Не подходит для подсчёта ячеек с пользовательскими цветами (не из стандартной палитры).
- 🔴 Требует наличия заголовков в таблице для корректной работы фильтра.
═══
3. Способ: VBA-макрос для подсчёта цветных ячеек
Для пользователей, готовых использовать Visual Basic for Applications, написание макроса — самый гибкий и мощный способ. VBA позволяет анализировать любые цвета, включая пользовательские, и работать с диапазонами любой сложности.
Приведём два варианта макросов:
- Подсчёт ячеек одного цвета (например, красного):
Function CountColoredCells(rng As Range, color As Range) As Long
Dim cl As Range
Dim count As Long
Dim targetColor As Long
targetColor = color.Interior.Color
count = 0
For Each cl In rng
If cl.Interior.Color = targetColor Then
count = count + 1
End If
Next cl
CountColoredCells = count
End Function
Чтобы использовать эту функцию:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в модуль (
Insert → Module). - Вернитесь в Excel и в любой ячейке введите:
=CountColoredCells(A1:A100; B1)где
A1:A100— диапазон для подсчёта, аB1— ячейка с образцом цвета.
Для подсчёта ячеек с пользовательскими цветами (не из стандартной палитры) используйте модифицированный код:
Function CountCustomColoredCells(rng As Range, colorCode As Long) As Long
Dim cl As Range
Dim count As Long
count = 0
For Each cl In rng
If cl.Interior.Color = colorCode Then
count = count + 1
End If
Next cl
CountCustomColoredCells = count
End Function
Здесь colorCode — это числовое значение цвета (например, RGB(255, 0, 0) для красного). Чтобы узнать код цвета ячейки, используйте макрос:
Sub GetColorCode()
Dim cell As Range
Set cell = ActiveCell
MsgBox "Цветовой код: " & cell.Interior.Color
End Sub
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии такого файла Excel может показать предупреждение о безопасности — разрешите выполнение макросов, если доверяете источнику.
Сохраните файл как .xlsm (Файл → Сохранить как → Тип файла: Книга Excel с поддержкой макросов)|
Включите поддержку макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы)|
Проверьте, что диапазон для подсчёта не содержит объединённых ячеек|
Запишите код цвета образца заранее (через макрос GetColorCode)
-->
═══
4. Способ: Надстройки для Excel (Kutools, Ablebits)
Если вы не хотите возиться с формулами или VBA, можно воспользоваться специализированными надстройками, которые добавляют функционал для работы с цветами. Самые популярные решения — Kutools for Excel и Ablebits.
Kutools for Excel предлагает инструмент Count by Color, который за несколько кликов подсчитывает количество ячеек с заданным цветом фона или шрифта. Как это работает:
- 📌 Установите надстройку (бесплатная пробная версия доступна на официальном сайте).
- 📌 Выделите диапазон для анализа.
- 📌 Перейдите на вкладку
Kutoolsи выберитеSelect → Select Cells with Format. - 📌 В открывшемся окне укажите цвет фона и нажмите
OK. - 📌 Excel выделит все ячейки с этим цветом, а в строке состояния отобразится их количество.
Преимущества надстроек:
- ✅ Не требуют знания формул или VBA.
- ✅ Работают с пользовательскими цветами.
- ✅ Предлагают дополнительные функции (например, удаление форматирования по цвету).
Недостатки:
- ❌ Платные (хотя есть бесплатные пробные версии).
- ❌ Могут замедлять работу Excel при больших объёмах данных.
| Надстройка | Функция для цвета | Стоимость (2026) | Бесплатная версия |
|---|---|---|---|
| Kutools for Excel | Count by Color | от $39 | 30-дневный триал |
| Ablebits | Count Colored Cells | от $59 | 14-дневный триал |
| ASAP Utilities | Select cells by color | Бесплатно | Да (ограниченный функционал) |
ASAP Utilities — единственная полностью бесплатная надстройка с функцией подсчёта цветных ячеек, но её интерфейс менее интуитивен, чем у платных аналогов.
═══
5. Способ: Power Query (для Excel 2016 и новее)
В современных версиях Excel (2016, 2019, 365) появился инструмент Power Query, который позволяет импортировать данные и трансформировать их, включая анализ форматирования. Хотя Power Query не предназначен напрямую для работы с цветами ячеек, его можно использовать в комбинации с VBA для автоматизации процесса.
Алгоритм:
- Выделите ваш диапазон и нажмите
Данные → Из таблицы/диапазона(в группеПолучить и преобразовать). - В открывшемся редакторе Power Query добавьте пользовательский столбец с формулой, которая будет проверять цвет (это потребует предварительной настройки через VBA).
- После обработки загрузите данные обратно в Excel и подсчитайте количество меток.
Пример кода для Power Query (требует предварительной настройки):
let
Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
AddColorColumn = Table.AddColumn(Source, "Цвет", each if [Column1] = "Ваше условие" then 1 else 0)
in
AddColorColumn
Этот метод сложнее предыдущих, но он полезен, если вам нужно автоматизировать подсчёт цветов в регулярно обновляемых данных (например, в отчётах, которые приходят ежемесячно).
⚠️ Внимание: Power Query не может напрямую считывать цвет ячеек — для этого требуется предварительная обработка данных через VBA или вспомогательные столбцы. Этот способ подходит только опытным пользователям.
═══
6. Ошибки и решения: почему не работает подсчёт цветов?
Даже при следовании инструкциям пользователи часто сталкиваются с проблемами. Рассмотрим типичные ошибки и способы их исправления:
Проблема 1: Функция GET.CELL возвращает неверный код цвета.
- 🔹 Причина: Вы используете пользовательский цвет, который не входит в стандартную палитру Excel.
- 🔹 Решение: Используйте VBA для получения точного цветового кода (как описано в разделе 3).
Проблема 2: Макрос не считает ячейки с условным форматированием.
- 🔹 Причина: Условное форматирование применяется динамически и не меняет фактический цвет ячейки (свойство
Interior.Colorостаётся прежним). - 🔹 Решение: Используйте метод
.DisplayFormat.Interior.Colorв VBA:If cl.DisplayFormat.Interior.Color = targetColor Then
Проблема 3: Надстройка (например, Kutools) не видит некоторые цвета.
- 🔹 Причина: Цвета применены через условное форматирование, а не через прямой формат ячеек.
- 🔹 Решение: Преобразуйте условное форматирование в обычный формат: выделите диапазон →
Главная → Формат по образцу(кисть) → щёлкните по ячейке с нужным цветом.
Проблема 4: Формула со вспомогательным столбцом выдаёт ошибку #ИМЯ?.
- 🔹 Причина: Не создан именованный диапазон
ЦветЯчейки. - 🔹 Решение: Повторите шаги из раздела 1 для создания именованного диапазона.
Как узнать, применён ли цвет через условное форматирование?
Откройте диспетчер правил условного форматирования (Главная → Условное форматирование → Управление правилами). Если в списке есть правила с заливкой, значит цвет динамический и может не распознаваться стандартными методами подсчёта.
═══
FAQ: Частые вопросы о подсчёте цветных ячеек
Можно ли посчитать ячейки с цветом текста, а не фона?
Да, для этого в макросе VBA используйте свойство .Font.Color вместо .Interior.Color. Пример функции:
Function CountFontColor(rng As Range, color As Range) As Long
Dim cl As Range, count As Long
count = 0
For Each cl In rng
If cl.Font.Color = color.Font.Color Then count = count + 1
Next cl
CountFontColor = count
End Function
Для условного форматирования проверяйте .DisplayFormat.Font.Color.
Почему функция GET.CELL работает только с английской версией Excel?
Функция GET.CELL является "скрытой" и может не корректно работать в локализованных версиях Excel (например, русской). Чтобы обойти это ограничение:
- Переключите язык интерфейса на английский (
Файл → Параметры → Язык). - Используйте VBA вместо
GET.CELL.
В русских версиях Excel вместо GET.CELL иногда помогает функция ЯЧЕЙКА, но она не поддерживает проверку цвета.
Как посчитать ячейки с градиентной заливкой?
Стандартные методы (включая VBA) не работают с градиентной заливкой, так как она не имеет единого цветового кода. Решения:
- Замените градиент на сплошной цвет.
- Используйте надстройки вроде Kutools, которые могут анализировать градиенты как изображения (функция
Color Picker).
Можно ли автоматически обновлять подсчёт при изменении цветов?
Да, для этого:
- Для вспомогательного столбца: используйте
Лист.Calculateв VBA для принудительного пересчёта. - Для макросов: разместите код в событии
Worksheet_Change:Private Sub Worksheet_Change(ByVal Target As Range)Application.CalculateFull
End Sub
Надстройки (например, Kutools) обновляют данные автоматически.
Есть ли разница между подсчётом в Excel и Google Sheets?
Google Sheets не поддерживает Пример скрипта для Google Sheets:
const sheet = SpreadsheetApp.getActiveSheet(); const range = sheet.getRange("A1:A100"); const colors = range.getBackgrounds(); let count = 0; const targetColor = "#ff0000"; // красный colors.forEach(row => { row.forEach(cell => { if (cell === targetColor) count++; }); }); return count; }GET.CELL и имеет ограниченные возможности VBA. Альтернативы:
=COUNTIF с цветовыми метками (вручную или через Apps Script).function countColoredCells() {
═══