Подсчет окрашенных ячеек в Excel: от фильтра до формул
Стандартными функциями вроде СЧЁТЕСЛИ посчитать ячейки по цвету заливки или шрифта в Excel нельзя, так как они анализируют только значения. Однако задачу можно решить четырьмя способами: от быстрого ручного фильтра до создания собственной функции на макросах (VBA), которая будет работать как обычная формула. Выбор метода зависит от вашей версии Excel и необходимости автоматизации.
Краткий ответ: Самый быстрый способ без кода — использовать фильтр по цвету и посмотреть количество строк в статусной строке. Для автоматического пересчета при изменении данных потребуется макрос VBA, создающий функцию CountColor.
Способ 1: Фильтр по цвету (без формул и кода)
Этот метод идеален для разовой проверки данных. Он не требует написания формул и работает во всех версиях Excel.
- Выделите шапку таблицы или весь диапазон данных.
- На вкладке Данные нажмите кнопку Фильтр (или сочетание клавиш
Ctrl+Shift+L). - Нажмите на стрелку фильтра в нужном столбце.
- Выберите пункт Фильтр по цвету и укажите нужный оттенок заливки или шрифта.
- Посмотрите в левый нижний угол окна Excel (строка состояния). Там будет надпись вида: «Найдено: X из Y записей». Число X — это и есть количество окрашенных ячеек.
Если строка состояния скрыта, кликните по ней правой кнопкой мыши и убедитесь, что стоит галочка напротив пункта «Количество выделенных ячеек».
Способ 2: Функция пользователя VBA (Автоматический подсчет)
Если вам нужно, чтобы количество ячеек пересчитывалось автоматически при изменении цвета или данных, стандартные средства не помогут. Потребуется создать пользовательскую функцию (UDF) через редактор макросов. Это универсальное решение для Excel 2010–2026.
Инструкция по созданию функции:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - В меню выберите Insert > Module.
- Скопируйте и вставьте следующий код в белое окно модуля:
Function CountByColor(rng As Range, colorCell As Range) As Long
Dim cell As Range
Dim targetColor As Long
Dim count As Long
' Получаем код цвета из ячейки-образца
targetColor = colorCell.Interior.Color
' Проходим по диапазону
For Each cell In rng
If cell.Interior.Color = targetColor Then
count = count + 1
End If
Next cell
CountByColor = count
End Function
- Закройте редактор VBA (
Alt+Q) и вернитесь в таблицу. - Используйте новую формулу как обычную функцию:
=CountByColor(A1:A100; D1)ГдеA1:A100— диапазон для подсчета, аD1— любая ячейка, закрашенная в нужный вам цвет (образец).
Функции, работающие с цветом через VBA, не всегда обновляются автоматически при простой смене цвета ячейки. Если результат не изменился после перекрашивания, нажмите F9 (пересчет книги) или сохраните файл (Ctrl + S).
Способ 3: Сортировка и функция СЧЁТЗ
Если использование макросов запрещено политикой безопасности компании, можно воспользоваться комбинацией сортировки и подсчета.
- Отсортируйте столбец по цвету (Данные > Сортировка > выбрать цвет в параметрах). Все окрашенные ячейки соберутся в одном месте.
- Визуально определите границы блока с цветом.
- Используйте функцию
СЧЁТЗилиСЧЁТдля этого конкретного диапазона:=СЧЁТЗ(A2:A15)
Минус метода: при добавлении новых данных сортировку и формулу придется обновлять вручную.
Сравнение методов решения задачи
| Метод | Сложность | Автоматизация | Версия Excel | Когда использовать |
|---|---|---|---|---|
| Фильтр | Низкая | Нет | Любая | Быстрая разовая проверка |
| VBA функция | Средняя | Да (с пересчетом) | Любая | Постоянные отчеты, дашборды |
| Сортировка | Низкая | Нет | Любая | Если макросы запрещены |
| Надстройки | Высокая | Да | 365/2021 | Если уже установлены плагины |
Частые ошибки и нюансы
- Разные оттенки одного цвета. Excel различает цвета по числовому коду (RGB). Светло-красный и темно-красный для программы — это два разных цвета. При использовании VBA убедитесь, что ячейка-образец имеет точно такой же оттенок, как и целевые ячейки.
- Условное форматирование. Если цвет ячейки задан через «Условное форматирование», свойство
.Interior.Colorв VBA может возвращать код «Нет цвета» (так как физически ячейка не закрашена, цвет применяется визуально). Для таких случаев нужны более сложные скрипты, проверяющие свойстваDisplayFormat. - Сохранение файла. Файл с макросами (Способ 2) необходимо сохранять в формате «Книга Excel с поддержкой макросов» (.xlsm). В обычном формате (.xlsx) код будет удален при сохранении.
FAQ
Можно ли посчитать цвет шрифта, а не заливки?
Да. В коде VBA замените строку targetColor = colorCell.Interior.Color на targetColor = colorCell.Font.Color. Логика работы останется той же.
Работает ли это в Google Таблицах? В Google Таблицах нет встроенной функции подсчета по цвету, но там проще писать скрипты на Apps Script, которые работают аналогично описанному выше VBA.
Почему функция CountByColor возвращает #ИМЯ?
Ошибка #ИМЯ? (или #NAME?) означает, что Excel не видит функцию. Проверьте, сохранен ли код в модуле, и убедитесь, что имя файла имеет расширение .xlsm. Также проверьте, не переименовали ли вы функцию в коде.