Как посчитать закрашенные ячейки в Excel: все работающие методы

Почему стандартные функции Excel не видят цвета ячеек

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

Внутренняя архитектура Microsoft Excel разделяет: 1) Содержимое ячейки (то, что вы видите в строке формул), 2) Форматирование (шрифт, цвет, границы).

Когда вы применяете функцию =СЧЁТЕСЛИ(A1:A10; ">5"), она анализирует только первую часть — числа больше 5. А вот информация о том, что ячейка A3 закрашена в красный, для неё недоступна.

Эта особенность становится проблемой, когда нужно:

✔️ Подсчитать количество ячеек с красным фоном в отчёте о просроченных платежах,

✔️ Найти все зелёные ячейки в таблице с выполненными задачами,

✔️ Автоматически суммировать значения только в ячейках определённого цвета.

К счастью, обойти ограничение можно несколькими способами — от ручных до полностью автоматизированных.

📊 Как часто вам нужно считать цветные ячейки в Excel?
Ежедневно
1-2 раза в неделю
Редко, но методично
Первый раз столкнулся с задачей

Метод 1: Фильтр по цвету (самый простой способ)

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

Инструкция:

  1. Выделите диапазон ячеек, в котором нужно посчитать цветные (например, A1:D50).
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Нажмите на стрелку фильтра в заголовке столбца и выберите Фильтр по цветуЦвет заливки → нужный оттенок.
  4. Excel отобразит только ячейки выбранного цвета. Их количество будет показано в строке состояния (внизу окна).

Выделить весь диапазон данных (включая заголовки)

Убедиться, что цвет заливки применён ко всем нужным ячейкам

Отключить другие фильтры (если они активны)

Проверить, что в строке состояния включён счётчик (правый клик → "Количество")-->

Ограничения метода:

❌ Не подходит для динамических данных (при изменении цвета фильтр не обновляется автоматически),

❌ Нельзя использовать результат в других формулах,

❌ Работает только для одного цвета за раз.

⚠️ Внимание: Если в вашей таблице применяется условное форматирование (цвет меняется по правилу), фильтр по цвету может не сработать. В этом случае используйте методы 3 или 5.

Метод 2: Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (для опытных пользователей)

Функция =ПОЛУЧИТЬ.ЯЧЕЙКУ() (или =GET.CELL в английской версии) — это скрытый инструмент Excel, который может возвращать информацию о формате ячейки, включая цвет. Однако она имеет два существенных минуса: 1) Работает только в именованных формулах, 2) Возвращает индекс цвета, а не его название.

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

  1. Нажмите Ctrl+F3, чтобы открыть Диспетчер имён. Создайте новое имя (например, GetColor).
  2. В поле Диапазон введите формулу:
    =ПОЛУЧИТЬ.ЯЧЕЙКУ(38;!A1)

    где 38 — код для получения цвета заливки, а !A1 — относительная ссылка на первую ячейку диапазона.

  3. Теперь в любой ячейке можно использовать формулу:
    =ЕСЛИ(GetColor=6; 1; 0)

    где 6 — индекс жёлтого цвета (список индексов см. ниже).

ЦветИндексПример формулы
Чёрный1=ЕСЛИ(GetColor=1; 1; 0)
Белый2=ЕСЛИ(GetColor=2; 1; 0)
Красный3=ЕСЛИ(GetColor=3; 1; 0)
Зелёный4=ЕСЛИ(GetColor=4; 1; 0)
Синий5=ЕСЛИ(GetColor=5; 1; 0)

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

Как узнать индекс своего цвета?

1. Закрасьте любую ячейку нужным цветом.

2. В любой другой ячейке введите формулу =ПОЛУЧИТЬ.ЯЧЕЙКУ(38; A1) (где A1 — адрес закрашенной ячейки).

3. Формула вернёт число — это и есть индекс цвета для вашей палитры.

Метод 3: VBA-макрос для подсчёта цветных ячеек

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

Инструкция по созданию макроса:

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

    CountColorCells = count

    End Function

  4. Закройте редактор VBA.

Теперь в Excel появится новая функция =CountColorCells. Используйте её так:

=CountColorCells(A1:A100; C1)

где A1:A100 — диапазон для поиска, а C1 — ячейка с образцом цвета.

⚠️ Внимание: Макрос сравнивает точные цвета, включая оттенки. Если ячейки закрашены вручную разными способами (например, через "Цвет заливки" и "Темы"), они могут восприниматься как разные цвета, даже если визуально выглядят одинаково.

Метод 4: Power Query для динамического подсчёта

Если вы работаете с Excel 2016+ или Microsoft 365, можно использовать Power Query — инструмент для преобразования данных. Этот метод подходит для регулярного анализа больших таблиц.

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

  1. Выделите ваш диапазон и перейдите на вкладку ДанныеИз таблицы/диапазона.
  2. В открывшемся редакторе Power Query добавьте Настраиваемый столбец с формулой:
    = if [Column1] <> null and Record.Field(Excel.CurrentWorkbook(){[Name="Table1"]}[Content]{0}, "BackgroundColor") = "#FFFF0000" then 1 else 0

    (замените #FFFF0000 на HEX-код вашего цвета и Table1 на имя таблицы).

  3. Затем сгруппируйте данные по новому столбцу, чтобы посчитать количество единиц.

Плюсы метода:

✅ Работает с динамическими данными (обновляется при изменении исходной таблицы),

✅ Можно комбинировать с другими преобразованиями (фильтрация, сортировка),

✅ Поддерживает условное форматирование.

Минусы:

❌ Сложно настроить без опыта работы с Power Query,

❌ Требует обновления запроса вручную (или настройки автоматического обновления).

Метод 5: Надстройка "ColorCounter" (для ленивых)

Если вам не хочется разбираться в формулах или VBA, можно воспользоваться готовыми надстройками. Одна из самых популярных — ColorCounter (бесплатная для личного использования).

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

  • 📥 Скачайте надстройку с официального сайта (например, ablebits.com).
  • 🖥️ Установите через Файл → Параметры → Надстройки → Управление надстройками Excel.
  • 🎨 Выделите диапазон и нажмите новую кнопку ColorCounter на ленте.
  • 📊 В открывшемся окне выберите цвет и получите количество ячеек.

Преимущества надстройки:

✔️ Работает с любыми цветами (включая градиенты),

✔️ Поддерживает условное форматирование,

✔️ Экспортирует результаты в новую таблицу.

Недостатки:

⚠️ Требует установки стороннего ПО,

⚠️ Может конфликтовать с корпоративными политиками безопасности.

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

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

МетодСложностьРаботает с условным форматированиемАвтоматизацияТребует установки
Фильтр по цвету❌ Нет❌ Нет❌ Нет
ПОЛУЧИТЬ.ЯЧЕЙКУ⭐⭐⭐❌ Нет✅ Да❌ Нет
VBA-макрос⭐⭐⭐⭐✅ Да✅ Да❌ Нет
Power Query⭐⭐⭐⭐✅ Да✅ Да❌ Нет
Надстройка✅ Да✅ Да✅ Да

Рекомендации по выбору:

  • 🔹 Для разового подсчёта — используйте Фильтр по цвету.
  • 🔹 Если нужна формула для отчётов — настройте ПОЛУЧИТЬ.ЯЧЕЙКУ.
  • 🔹 Для условного форматирования — выбирайте между VBA или Power Query.
  • 🔹 Если вы не хотите разбираться в технических деталях — установите надстройку.

FAQ: Частые вопросы о подсчёте цветных ячеек

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

Да, но не все методы это поддерживают. Power Query и VBA могут работать с полупрозрачностью, если указать точный HEX-код цвета (например, #FF000080 для полупрозрачного красного). Стандартные функции Excel и фильтр по цвету полупрозрачность игнорируют.

Почему макрос не видит цвет, который я применил через "Формат по образцу"?

При копировании формата через Формат по образцу Excel может сохранять цвет как тематический, а не как фиксированный RGB. В этом случае макрос сравнивает не сами цвета, а их индексы в теме. Решение: вручную задайте цвет через палитру (не через образец) или модифицируйте макрос, чтобы он сравнивал .ThemeColor вместо .Color.

Как посчитать ячейки, закрашенные градиентом?

Градиентная заливка — это не однородный цвет, а комбинация оттенков. Ни один из стандартных методов не сможет точно посчитать такие ячейки. Обходной путь:

  1. Замените градиент на сплошной цвет (например, средний оттенок градиента).
  2. Используйте VBA с проверкой типа заливки:
    If cl.Interior.Pattern = xlGradient Then count = count + 1

Можно ли посчитать цветные ячейки в Google Таблицах?

В Google Sheets нет встроенных функций для подсчёта по цвету, но можно использовать Google Apps Script (аналог VBA). Вот пример кода:

function countColoredCells(range, color) {

var sheet = SpreadsheetApp.getActiveSheet();

var range = sheet.getRange(range);

var bgColors = range.getBackgrounds();

var count = 0;

for (var i = 0; i < bgColors.length; i++) {

for (var j = 0; j < bgColors[i].length; j++) {

if (bgColors[i][j] == color) count++;

}

}

return count;

}

Цвет указывается в формате HEX (например, "#ff0000" для красного).

Почему функция ПОЛУЧИТЬ.ЯЧЕЙКУ возвращает ошибку #ИМЯ?

Ошибка #ИМЯ? возникает по трём причинам:

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