Вы когда-нибудь сталкивались с ситуацией, когда в Excel нужно быстро посчитать количество ячеек определённого цвета? Например, красные — это просроченные задачи, зелёные — выполненные, а жёлтые — в процессе. Вручную пересчитывать сотни строк нереально, но и стандартных функций для этого в Excel нет. Почему так? Потому что цвет фона или шрифта — это атрибут оформления, а не данные, которые программа может автоматически анализировать.
В этой статье мы разберём 5 проверенных методов, как обойти это ограничение: от простых обходных путей с фильтрацией до написания VBA-скриптов и использования сторонних надстроек. Вы узнаете, какой способ подходит для вашей версии Excel (включая Office 365), как избежать типичных ошибок при работе с цветами, и почему иногда проще изменить подход к разметке данных, чем писать сложные макросы. Готовы? Начнём с самого доступного варианта — без единой строки кода.
1. Метод фильтрации: быстрый обходной путь без формул
Если вам нужно однократно посчитать цветные ячейки, а не автоматизировать процесс, самый простой способ — использовать встроенную фильтрацию по цвету. Этот метод работает во всех версиях Excel от 2007 года и не требует знаний программирования.
Вот как это сделать:
- 📌 Выделите диапазон ячеек, в котором нужно посчитать цветные элементы (например,
A1:D100). - 🔍 Перейдите на вкладку
Главная→Сортировка и фильтр→Фильтр. - 🎨 Нажмите на стрелку фильтра в заголовке столбца и выберите
Фильтр по цвету→Цвет заливки(илиЦвет текста). - 📊 В нижней части экрана Excel покажет количество отфильтрованных строк — это и будет искомое значение.
Преимущество метода: не требует подготовки данных и работает даже в защищённых листах. Но есть и минусы:
- ❌ Не подходит для динамического подсчёта (при изменении цвета придётся фильтровать заново).
- ❌ Нельзя использовать в формулах или сводных таблицах.
- ❌ Если в диапазоне есть скрытые строки, фильтр может дать неверный результат.
⚠️ Внимание: Фильтрация по цвету учитывает только видимые ячейки. Если в вашем диапазоне есть скрытые строки или столбцы, их содержимое не будет учтено в результатах. Перед фильтрацией проверьте настройки видимости через Главная → Формат → Скрыть/Отобразить.
2. Функция GET.CELL: скрытый инструмент для опытных пользователей
Мало кто знает, но в Excel есть скрытая функция GET.CELL, которая может возвращать информацию о формате ячейки, включая цвет. Она не отображается в мастер-функций, но её можно использовать через имя диапазона.
Алгоритм действий:
- Выделите ячейку, где будет отображаться результат (например,
F1). - Перейдите на вкладку
Формулы→Диспетчер имён→Создать. - В поле
ИмявведитеЦветЯчейки, а в полеДиапазонукажите формулу:=GET.CELL(38,!A1)Здесь
38— это код параметра для цвета заливки, а!A1— ссылка на ячейку, цвет которой проверяем (восклицательный знак обязателен!). - В ячейке
F1введите формулу:=ЕСЛИ(ЦветЯчейки=3;1;0)Где
3— это код красного цвета в палитре Excel (для других цветов используйте таблицу ниже).
Теперь можно протянуть формулу на другие ячейки и просуммировать результаты. Но есть нюанс:
| Цвет заливки | Код для GET.CELL | Пример формулы |
|---|---|---|
| Красный | 3 | =ЕСЛИ(ЦветЯчейки=3;1;0) |
| Зелёный | 4 | =ЕСЛИ(ЦветЯчейки=4;1;0) |
| Жёлтый | 6 | =ЕСЛИ(ЦветЯчейки=6;1;0) |
| Синий | 5 | =ЕСЛИ(ЦветЯчейки=5;1;0) |
| Без заливки | 0 | =ЕСЛИ(ЦветЯчейки=0;1;0) |
⚠️ Внимание: ФункцияGET.CELLвозвращает код цвета из стандартной палитры Excel, а не RGB-значения. Если вы использовали нестандартные цвета (например, через пипетку), этот метод не сработает. В таком случае переходите к способу сVBA.
Создать имя диапазона с функцией GET.CELL|Убедиться, что цвет взят из стандартной палитры|Проверить код цвета в таблице выше|Протянуть формулу на весь диапазон|Просуммировать результаты-->
3. VBA-макросы: универсальное решение для любого цвета
Если вам нужно автоматизировать подсчёт цветных ячеек или работать с нестандартными цветами, без 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— ячейка с образцом цвета.
Преимущества метода:
- 🎯 Работает с любыми цветами, включая пользовательские RGB.
- 🔄 Можно использовать в динамических таблицах и сводных отчётах.
- 📊 Позволяет создавать условные функции (например, считать только красные ячейки с значением > 100).
⚠️ Внимание: Если ваш файл Excel будет открываться на другом компьютере, убедитесь, что там разрешено выполнение макросов. Иначе формула вернёт ошибку#ИМЯ?. Чтобы избежать этого, сохраните файл в формате.xlsmи включите макросы при открытии.
Как узнать RGB-код цвета в Excel?
Чтобы точно определить цвет ячейки, выделите её, затем перейдите на вкладку Главная → Цвет заливки → Другие цвета. В открывшемся окне вы увидите значения RGB (например, R: 255, G: 0, B: 0 для чистого красного). Эти данные можно использовать в VBA-коде для точного сопоставления.
4. Надстройки: готовые решения для новичков
Если VBA кажется слишком сложным, а встроенные функции не подходят, можно воспользоваться сторонними надстройками. Они добавляют в Excel новые функции для работы с цветами без программирования.
Топ-3 проверенных надстройки:
- 📦 Morefunc — бесплатный пакет с функцией
COUNTBYCOLOR, которая считает ячейки по цвету заливки или шрифта. Скачать можно здесь. - 📊 Ablebits — платная надстройка с инструментом
Count Cells by Color, который визуально выделяет и считает цветные ячейки. Подходит для Excel 2010–2023. - 🔍 Kutools for Excel — включает функцию
Select Cells with Format, которая позволяет не только считать, но и копировать/удалять ячейки по цвету.
Как установить надстройку (на примере Morefunc):
- Скачайте файл
morefunc.xllи сохраните его на жёстком диске. - В Excel перейдите в
Файл → Параметры → Надстройки. - Внизу окна выберите
Управление: Надстройки Excel→Перейти. - Нажмите
Обзор, найдите скачанный файл и подтвердите установку.
После установки в Excel появится новая функция:
=COUNTBYCOLOR(диапазон; образец_цвета; [тип_цвета])
Где [тип_цвета] может быть:
1— цвет заливки (по умолчанию),2— цвет шрифта.
5. Условное форматирование + вспомогательный столбец: альтернативный подход
Если вам нужно регулярно работать с цветными ячейками, возможно, стоит пересмотреть сам подход к разметке данных. Вместо ручного окрашивания ячеек можно использовать условное форматирование на основе значений в вспомогательном столбце. Это позволит применять стандартные функции СЧЁТЕСЛИ или СУММЕСЛИ.
Пример реализации:
- Добавьте справа от ваших данных новый столбец (например,
Status). - Заполните его значениями, соответствующими цветам (например,
"Красный","Зелёный"). - Примените условное форматирование:
- Выделите исходный диапазон (например,
A1:B100). - Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - В поле
Форматировать только ячейки сукажитеЗначение → равняется → Красный(ссылка на ячейку во вспомогательном столбце). - Задайте нужный цвет заливки и сохраните правило.
- Выделите исходный диапазон (например,
=СЧЁТЕСЛИ(C:C; "Красный")
где C:C — вспомогательный столбец.
Преимущества метода:
- ✅ Нет зависимости от цветов — данные хранятся в текстовом виде.
- ✅ Можно использовать
СУММЕСЛИМН,СЧЁТЕСЛИМНи другие функции. - ✅ Легко обновлять правила форматирования (например, изменить цвет для всех "красных" ячеек за один клик).
⚠️ Внимание: Если вы импортируете данные из внешних источников (например,1СилиSQL), добавьте вспомогательный столбец на этапе импорта. Вручную заполнять его для тысяч строк неэффективно.
6. Power Query: для работы с большими массивами данных
Если у вас Excel 2016 или новее (включая Office 365), для подсчёта цветных ячеек можно использовать Power Query. Этот инструмент позволяет импортировать данные, анализировать их форматирование и выгружать результаты в новую таблицу.
Инструкция:
- Выделите ваш диапазон и перейдите на вкладку
Данные→Из таблицы/диапазона(в группеПолучить и преобразовать данные). - В открывшемся редакторе Power Query добавьте пользовательский столбец:
= if [Column1] = "Ваше условие" then "Красный" else "Зелёный"Здесь вместо
"Ваше условие"укажите критерий, по которому ячейки окрашены (например,[Column1] < 0для отрицательных значений). - Добавьте ещё один столбец для подсчёта:
= Table.AddColumn(#"Добавлен пользовательский столбец", "Count", each 1) - Сгруппируйте данные по цвету: выделите столбец с цветами →
Преобразовать→Группировка→ укажитеСуммапо столбцуCount. - Нажмите
Закрыть и загрузить, чтобы вернуть результаты в Excel.
Этот метод особенно полезен, если:
- 📈 Вам нужно анализировать десятки тысяч строк.
- 🔄 Данные регулярно обновляются (например, ежедневные отчёты).
- 🎨 Цвета ячеек зависят от сложных условий (например, комбинации значений в нескольких столбцах).
Минус подхода: Power Query не может напрямую считывать цвет ячеек — он работает с логикой их окрашивания. Поэтому метод подходит только если цвета назначены по чётким правилам (например, через условное форматирование).
Сравнение методов: какой выбрать?
Чтобы помочь вам определиться, мы собрали сравнительную таблицу всех способов с учётом их плюсов, минусов и областей применения.
| Метод | Сложность | Работает с любыми цветами? | Динамический подсчёт? | Когда использовать |
|---|---|---|---|---|
| Фильтрация | ⭐ | Да | Нет | Для разовых задач в небольших таблицах |
| GET.CELL | ⭐⭐ | Нет (только стандартная палитра) | Да | Если нужны формулы без VBA и цвета стандартные |
| VBA | ⭐⭐⭐ | Да | Да | Для автоматизации и работы с нестандартными цветами |
| Надстройки | ⭐ | Да | Да | Если не хочется писать код и нужны дополнительные функции |
| Вспомогательный столбец | ⭐⭐ | Неприменимо | Да | Для долговременных проектов с регулярным анализом |
| Power Query | ⭐⭐⭐ | Неприменимо | Да | Для больших данных с чёткой логикой окрашивания |
Если вы всё ещё сомневаетесь, ответьте на два вопроса:
- Нужно ли вам обновлять подсчёт при изменении данных?
- ✅ Да → выбирайте
VBA, надстройки или вспомогательный столбец. - ❌ Нет → хватит фильтрации или
GET.CELL.
- ✅ Да → выбирайте
- ✅ Да → только
VBAили надстройки. - ❌ Нет → подойдёт любой метод.
FAQ: Частые вопросы о подсчёте цветных ячеек
Можно ли посчитать ячейки по цвету шрифта, а не заливки?
Да, для этого:
- В методе с
GET.CELLиспользуйте код параметра24вместо38. - В
VBA-коде заменитеInterior.ColorнаFont.Color. - В надстройке Morefunc укажите третий аргумент
2(например,=COUNTBYCOLOR(A1:A100;B1;2)).
Почему моя функция GET.CELL возвращает #ИМЯ?
Ошибка #ИМЯ? возникает по трём причинам:
- Вы не создали имя диапазона с функцией
GET.CELL. - В формуле отсутствует восклицательный знак перед адресом ячейки (должно быть
!A1, а неA1). - Вы используете неанглийскую версию Excel, где название функции может отличаться (например,
GET.CELLвместоGET.CELL— проверьте локализацию).
Как посчитать ячейки с градиентной заливкой?
К сожалению, ни один из описанных методов не работает с градиентной заливкой, так как Excel не предоставляет API для чтения таких форматов. Альтернативные варианты:
- Замените градиент на сплошной цвет (например, средний оттенок градиента).
- Используйте вспомогательный столбец с текстовыми метками.
- Если градиент зависит от значения ячейки (например, тепловая карта), воспользуйтесь
Power Queryдля анализа исходных данных.
Можно ли посчитать цветные ячейки в Google Sheets?
В Google Sheets нет встроенных функций для подсчёта по цвету, но есть обходные пути:
- Используйте App Script (аналог
VBA):function countColoredCells() {var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("A1:A100");
var colors = range.getBackgrounds();
var count = 0;
var targetColor = "#ff0000"; // Красный цвет в HEX
for (var i = 0; i < colors.length; i++) {
if (colors[i][0] == targetColor) count++;
}
return count;
}
- Установите надстройку Color Counter из Google Workspace Marketplace.
- Примените вспомогательный столбец с условным форматированием (как в Excel).
Почему макрос считает не все цветные ячейки?
Чаще всего проблема в одном из трёх:
- 🔍 Цвета визуально одинаковые, но имеют разные RGB-коды. Проверьте это через
VBA:Sub CheckColor()MsgBox Selection.Interior.Color
End Sub
Выделите ячейку и запустите макрос — он покажет точный код цвета.
- 📊 Макрос не учитывает объединённые ячейки. Добавьте в код проверку:
If cl.MergeCells Then' Обработка объединённых ячеек
End If
- 🔄 Цвета назначены через условное форматирование, а не вручную. В этом случае
VBAувидит только конечный цвет, но не правило его назначения. ИспользуйтеDisplayFormat:If cl.DisplayFormat.Interior.Color = targetColor Then