Подсчёт закрашенных ячеек в Microsoft Excel — задача, с которой сталкиваются пользователи при анализе данных с цветовой маркировкой. Например, когда в таблице выделены цветом просроченные заказы, важные клиенты или отклонения от нормы. Стандартные функции вроде СЧЁТЕСЛИ здесь не работают, так как не учитывают форматирование. Но есть как минимум 5 способов решить эту проблему — от ручных методов до автоматизированных скриптов.
Многие ошибочно считают, что для этого обязательно нужен VBA или сторонние надстройки. На самом деле, в большинстве случаев достаточно встроенных инструментов Excel — условного форматирования в паре с формулами или простого фильтра по цвету. Главное — выбрать метод, который подходит под вашу задачу: нужно ли обновлять подсчёт автоматически при изменении данных или достаточно разового анализа.
В этой статье мы разберём все актуальные способы — от самого простого (ручной подсчёт через фильтр) до продвинутых (макросы и Power Query). Вы узнаете, какой метод быстрее, какой точнее, и где скрыты подводные камни. А в конце — сравнительная таблица, которая поможет выбрать оптимальный вариант для вашего случая.
1. Ручное решение: фильтр по цвету ячейки
Самый быстрый способ, если нужно однократно посчитать закрашенные ячейки — использовать встроенный фильтр Excel. Этот метод не требует знания формул и работает во всех версиях программы, включая Excel Online.
Алгоритм простой:
- Выделите столбец с данными (включая заголовок).
- Перейдите на вкладку
Данные → Фильтр(или нажмитеCtrl+Shift+L). - Щёлкните по стрелке фильтра в заголовке столбца и выберите
Фильтр по цвету → [нужный цвет]. - Внизу экрана Excel покажет количество отфильтрованных строк — это и есть искомое значение.
✅ Плюсы метода:
- 🔹 Не требует формул или макросов — подходит для новичков.
- 🔹 Работает даже в защищённых файлах (где запрещены макросы).
- 🔹 Можно фильтровать по нескольким цветам одновременно.
❌ Минусы:
- 🔸 Не обновляется автоматически — при изменении данных фильтр придётся применять заново.
- 🔸 Не подходит для динамических отчётов (например, если цвет ячеек меняется по расписанию).
⚠️ Внимание: Если в столбце есть пустые ячейки, фильтр по цвету их проигнорирует. Чтобы учесть их, предварительно заполните пробелы любым символом (например, пробелом) или используйте другой метод.
2. Формулы для подсчёта цветных ячеек (без VBA)
Если нужен автоматический пересчёт при изменении данных, используйте формулы. В Excel нет встроенной функции для работы с цветами, но можно обойти это ограничение с помощью пользовательской функции или комбинации стандартных инструментов.
Способ работает в двух вариантах:
2.1. Через условное форматирование + вспомогательный столбец
Допустим, у вас в столбце A есть ячейки, закрашенные в красный цвет. Создайте рядом вспомогательный столбец (например, B) и выполните шаги:
- Выделите диапазон в столбце
A(например,A1:A100). - Перейдите в
Главная → Условное форматирование → Создать правило → Использовать формулу.... - Введите формулу, которая возвращает
ИСТИНАдля ячеек нужного цвета. Например, если красный цвет соответствует значению "Просрочено":=A1="Просрочено" - Задайте формат (заливка красным) и сохраните правило.
- Во вспомогательном столбце
Bвведите формулу:=ЕСЛИ(ЕЧИСЛО(НАЙТИ("Просрочено";A1));1;0)и протяните её на весь диапазон.
- Итоговое количество цветных ячеек посчитайте функцией:
=СУММ(B1:B100)
🔹 Пример: Если в ячейке A5 написано "Просрочено", то в B5 появится 1, иначе — 0. Сумма по столбцу B даст количество красных ячеек.
⚠️ Внимание: Этот метод работает только если цвет ячейки привязан к конкретному значению (тексту или числу). Если цвет назначен вручную без привязки к данным, используйте метод с VBA (раздел 4).
2.2. Через функцию GET.CELL (только для опытных пользователей)
В Excel есть скрытая функция GET.CELL, которая может возвращать информацию о формате ячейки, включая цвет. Однако она работает только в именованных формулах и требует ручной настройки.
Инструкция:
- Нажмите
Формулы → Диспетчер имён → Создать. - В поле
ИмявведитеЦветЯчейки, в полеДиапазонукажите:=GET.CELL(38;!A1)(где
38— код параметра для цвета фона). - Во вспомогательном столбце введите формулу:
=ЕСЛИ(ЦветЯчейки=3;1;0)(где
3— код красного цвета; для других цветов используйте их коды). - Протяните формулу на весь диапазон и просуммируйте единицы.
📌 Коды популярных цветов:
- 🔴 Красный —
3 - 🟢 Зелёный —
4 - 🔵 Синий —
5 - 🟡 Жёлтый —
6 - ⚪ Белый —
2
☑️ Подготовка к использованию GET.CELL
3. Использование надстройки "Поиск по формату"
Если не хочется возиться с формулами, можно установить бесплатную надстройку "ASAP Utilities" (работает в Excel 2010–2023). Она добавляет функцию подсчёта ячеек по цвету в несколько кликов.
Как пользоваться:
- Скачайте и установите ASAP Utilities с официального сайта.
- Откройте Excel, перейдите на вкладку
ASAP Utilities → Формат → Поиск по формату.... - В окне настроек выберите:
- 🔘
Цвет фона; - 🔘 Укажите нужный цвет;
- 🔘 Отметьте
Подсчитать количество.
- 🔘
ОК — программа покажет количество ячеек.✅ Преимущества:
- 🔹 Не требует знания формул или VBA.
- 🔹 Работает с ячейками, закрашенными вручную (без привязки к значению).
- 🔹 Можно искать по нескольким цветам одновременно.
❌ Недостатки:
- 🔸 Надстройка платная для коммерческого использования (бесплатна для личного).
- 🔸 Требует установки дополнительного ПО.
Важно: ASAP Utilities не работает в Excel Online и мобильных версиях программы.
4. Автоматизация через VBA (для продвинутых пользователей)
Если вам нужно динамически обновляемое решение, которое будет работать без ручного вмешательства, напишите простой макрос. Этот метод подходит для больших таблиц и регулярных отчётов.
Шаги для создания макроса:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте новый модуль:
Вставка → Модуль. - Скопируйте следующий код:
Function CountColoredCells(rng As Range, color As Range) As LongDim 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
- Закройте редактор VBA.
- Теперь в любой ячейке можно использовать формулу:
=CountColoredCells(A1:A100; C1)где
A1:A100— диапазон для поиска, аC1— ячейка с образцом цвета.
🔧 Как указать образец цвета:
- Создайте отдельную ячейку (например,
C1). - Закрасьте её в тот же цвет, что и искомые ячейки.
- В формуле ссылайтесь на эту ячейку как на
color.
⚠️ Внимание: Макросы работают только в файлах с расширением.xlsm(с поддержкой макросов). Если сохранить файл как.xlsx, код перестанет выполняться. Также VBA отключён по умолчанию в Excel Online.
Sub ShowColorCode()
MsgBox "Цветовой код: " & Selection.Interior.Color
End Sub
Это поможет точно указать цвет в формулах VBA.-->
5. Power Query: для больших данных и сложных правил
Если вы работаете с большими массивами данных (тысячи строк) или нужно учитывать несколько цветов одновременно, используйте Power Query. Этот инструмент доступен в Excel 2016+ и Microsoft 365.
Пошаговая инструкция:
- Выделите диапазон с данными и нажмите
Данные → Из таблицы/диапазона(илиCtrl+T, если данные ещё не в таблице). - В открывшемся окне Power Query добавьте пользовательский столбец:
- Перейдите на вкладку
Добавить столбец → Пользовательский столбец. - Введите название (например,
ЦветФона). - В поле формулы укажите:
= if [@[ИмяСтолбца]] = "Просрочено" then "Красный" else "Без цвета"(замените
ИмяСтолбцаи условие на свои).
- Перейдите на вкладку
Главная → Закрыть и загрузить).СЧЁТЕСЛИ для подсчёта строк с нужным цветом.⚡ Преимущества Power Query:
- 🔹 Обрабатывает миллионы строк без тормозов.
- 🔹 Можно создавать сложные правила (например, "красный И жирный шрифт").
- 🔹 Обновление данных в один клик.
⚠ Ограничения:
В Power Query нет прямого доступа к цвету фона ячейки, но можно обойти это ограничение:
1. Добавьте столбец с условным форматированием в Excel. 2. Загрузите данные в Power Query и используйте текстовые метки (например, "Красный", "Зелёный") вместо цветовых кодов. 3. После возврата в Excel примените условное форматирование к этим меткам.
.
Как узнать цветовой код в Power Query?
6. Сравнение методов: какой выбрать?
Чтобы выбрать оптимальный способ, оцените свои задачи по трём критериям:
- Частота использования (разово или регулярно).
- Тип данных (цвет привязан к значению или назначен вручную).
- Объём данных (десятки строк или тысячи).
📊 Сравнительная таблица методов:
| Метод | Автоматический пересчёт | Работает с ручным закрашиванием | Сложность | Подходит для больших данных |
|---|---|---|---|---|
| Фильтр по цвету | ❌ Нет | ✅ Да | ⭐ Очень просто | ❌ Нет (ручной подсчёт) |
| Формулы + условное форматирование | ✅ Да | ❌ Только если цвет привязан к значению | ⭐⭐ Средне | ✅ Да |
| GET.CELL | ✅ Да | ✅ Да | ⭐⭐⭐ Сложно | ✅ Да |
| ASAP Utilities | ❌ Нет (разовый подсчёт) | ✅ Да | ⭐ Очень просто | ✅ Да |
| VBA | ✅ Да | ✅ Да | ⭐⭐⭐ Сложно | ✅ Да |
| Power Query | ✅ Да | ❌ Только через условия | ⭐⭐⭐⭐ Очень сложно | ✅ Да (миллионы строк) |
Частые ошибки и как их избежать
При подсчёте цветных ячеек пользователи часто сталкиваются с типичными проблемами. Вот самые распространённые и способы их решения:
🔴 Ошибка 1: Формула возвращает 0, хотя цветные ячейки есть
- 🔹 Причина: Цвет назначен вручную, а формула ищет привязку к значению.
- 🔹 Решение: Используйте VBA или ASAP Utilities.
🟡 Ошибка 2: Макрос не работает в файле
- 🔹 Причина: Файл сохранён как
.xlsx(без поддержки макросов). - 🔹 Решение: Сохраните файл как
.xlsm(Файл → Сохранить как → Тип файла: Книга Excel с поддержкой макросов).
🔵 Ошибка 3: GET.CELL возвращает неверный цветовой код
- 🔹 Причина: Цвет ячейки назначен через тему документа, а не стандартную палитру.
- 🔹 Решение: Закрасьте ячейку-образец стандартным цветом (не через "Темы").
⚪ Ошибка 4: Power Query не видит цвета
- 🔹 Причина: Power Query не работает с визуальным форматированием.
- 🔹 Решение: Создайте вспомогательный столбец с текстовыми метками цветов в Excel, затем загружайте данные.
⚠️ Внимание: Если вы используете Excel Online, доступны только методы без VBA и надстроек (фильтр по цвету или формулы с условным форматированием). Для остальных способов потребуется десктопная версия программы.
FAQ: Ответы на популярные вопросы
Можно ли посчитать ячейки с цветом текста, а не фона?
Да, для этого в макросе VBA используйте свойство Font.Color вместо Interior.Color. Пример кода:
Function CountColoredText(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
CountColoredText = count
End Function
В формуле укажите ячейку с образцом цвета текста.
Как посчитать ячейки с градиентной заливкой?
Стандартные методы не работают с градиентом, так как Excel хранит его как сложный объект, а не однородный цвет. Решения:
- 🔹 Замените градиент на сплошную заливку.
- 🔹 Используйте VBA с проверкой типа заливки (
Interior.Pattern = xlPatternLinearGradient).
Почему функция GET.CELL выдаёт ошибку #ИМЯ?
Эта функция работает только в именованных формулах. Убедитесь, что:
- 🔹 Вы создали имя через
Диспетчер имён. - 🔹 В формуле используете правильный синтаксис:
=ИмяДиапазона(без скобок). - 🔹 Ячейка, к которой применяете функцию, не пустая.
Как посчитать цветные ячейки в Google Таблицах?
В Google Sheets нет встроенной функции для подсчёта по цвету, но можно использовать скрипт:
- Откройте
Расширения → Apps Script. - Вставьте код:
function countColoredCells(range, color) {const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getRange(range).getBackgrounds();
let count = 0;
data.forEach(row => {
row.forEach(cell => {
if (cell === color) count++;
});
});
return count;
}
- Сохраните скрипт и используйте в ячейке формулу
=countColoredCells("A1:B10"; "#ff0000")(где#ff0000— HEX-код красного).
Можно ли посчитать ячейки с полупрозрачной заливкой?
Да, но только через VBA. В коде проверяйте свойство Interior.ThemeColor и Interior.TintAndShade. Пример:
If cl.Interior.ThemeColor = 2 And cl.Interior.TintAndShade = 0.799981688894314 Then
count = count + 1
End If
Где 2 — индекс темы цвета (например, "Акцент 1"), а 0.799... — уровень прозрачности.