Как посчитать количество ячеек определённого цвета в Excel: все способы от простого к сложному

Подсчёт ячеек по цвету в Microsoft Excel — задача, с которой регулярно сталкиваются аналитики, бухгалтеры и менеджеры проектов. На первый взгляд кажется, что функция должна быть встроена в программу по умолчанию: выбрал цвет, получил количество. Но стандартных инструментов для этого нет — ни в Excel 2019, ни в Office 365. Почему так? Дело в том, что цвет фона или шрифта в Excel считается атрибутом оформления, а не данными. Программа просто не «видит» его как критерий для вычислений.

Тем не менее, обойти это ограничение можно минимум пятью способами — от элементарных (подойдёт даже новичкам) до продвинутых (требуют знания VBA). В этой статье разберём каждый метод с примерами, нюансами и пошаговыми инструкциями. Вы узнаете, как считать ячейки по цвету фона, цвета шрифта, а также как автоматизировать процесс для больших таблиц.

Важно: все методы, кроме VBA, имеют ограничения. Например, фильтрация работает только для видимых ячеек, а функции GET.CELL — только в именованных диапазонах. Мы честно расскажем о подводных камнях каждого подхода, чтобы вы могли выбрать оптимальный вариант для своей задачи.

Если вы работаете с Google Таблицами, то вам повезло больше: там есть встроенная функция =COUNTIFBYCOLOR() (правда, только в бета-версии). Но для Excel придётся использовать обходные пути. Начнём с самого простого — ручного подсчёта с помощью фильтра.

1. Способ: ручной подсчёт через фильтр по цвету

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

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

  1. Выделите диапазон ячеек, в котором нужно посчитать цветные ячейки (например, A1:D50).
  2. Перейдите на вкладку ГлавнаяСортировка и фильтрФильтр (или нажмите Ctrl+Shift+L).
  3. Нажмите на стрелку фильтра в заголовке столбца и выберите Фильтр по цветуЦвет заливки (или Цвет шрифта).
  4. В выпадающем списке кликните на нужный цвет. Excel оставит только ячейки с этим цветом.
  5. Посмотрите номер последней видимой строки в левом сером столбце с номерами — это и будет количество ячеек.

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

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

Пример таблицы для фильтрации

ТоварПрибыль (руб.)Регион
Ноутбук A-1200Москва
Смартфон B-850СПб
Планшет C3200Казань
Монитор D-450Новосибирск

После применения фильтра по красному цвету заливки останутся только 3 строки. Значит, убыточных позиций — 3. Но что делать, если данных сотни, а цветов десятки? Переходим к более продвинутым методам.

📊 Как часто вам нужно считать ячейки по цвету в Excel?
Ежедневно
Раз в неделю
Редко, но метód должен быть надёжным
Никогда не приходилось

2. Способ: функция GET.CELL для именованных диапазонов

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

Суть метода: функция GET.CELL может возвращать информацию о формате ячейки, включая цвет. Но она работает только внутри именованного диапазона. Вот пошаговая инструкция:

  1. Выделите ячейку, в которой хотите увидеть результат (например, F1).
  2. Перейдите на вкладку ФормулыОпределённые именаПрисвоить имя.
  3. В поле Имя введите, например, ЦветЗаливки.
  4. В поле Диапазон введите формулу:
    =GET.CELL(38,!A1)

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

  5. Нажмите OK и закройте окно.
  6. Теперь в ячейке F1 введите формулу:
    =ЦветЗаливки

    и скопируйте её на весь диапазон, где нужно проверить цвет.

  7. Добавьте столбец с подсчётом, где используйте =СЧЁТЕСЛИ для ячеек с нужным кодом цвета.

⚠️ Внимание: Код 38 в функции GET.CELL соответствует цвету заливки. Другие полезные коды:

  • 24 — цвет шрифта;
  • 37 — индекс цвета заливки в палитре;
  • 39 — индекс цвета шрифта.

Чтобы узнать индекс конкретного цвета, используйте макрос (см. раздел 5).

Главный плюс этого метода — он работает с условным форматированием, в отличие от фильтра. Минус — требует предварительной настройки именованных диапазонов и неудобен для больших таблиц.

☑️ Подготовка к использованию GET.CELL

Выполнено: 0 / 1

Создать именованный диапазон с функцией GET.CELL|Проверить код цвета (38 для заливки, 24 для шрифта)|Скопировать формулу на весь анализируемый диапазон|Добавить столбец с СЧЁТЕСЛИ для подсчёта

3. Способ: надстройка «Подсчёт по цвету» (для Excel 2013—2023)

Если вам нужно регулярно считать ячейки по цвету, но писать макросы нет желания, можно установить бесплатную надстройку. Одна из самых популярных — Color Counter от Ablebits. Она добавляет в Excel специальную кнопку, которая за секунды подсчитывает ячейки по заданному цвету.

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

  1. Скачайте надстройку с официального сайта Ablebits (бесплатная версия позволяет считать до 50 ячеек за раз).
  2. Закройте Excel и запустите установщик.
  3. Откройте Excel, перейдите в ФайлПараметрыНадстройки.
  4. Внизу окна выберите Надстройки ExcelПерейти.
  5. Отметьте галочкой Color Counter и нажмите OK.
  6. Теперь на вкладке Данные появится кнопка Count by Color.

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

  • 🔲 Диапазон для анализа;
  • 🎨 Цвет заливки или шрифта;
  • 📊 Формат вывода результата (количество или процент).

⚠️ Внимание: Надстройка не работает с ячейками, окрашенными через условное форматирование. Также она может конфликтовать с другими надстройками, поэтому перед установкой сохраните важные файлы.

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

  • ✅ Не требует знания формул или VBA;
  • ✅ Работает с диапазонами до 10 000 ячеек;
  • ✅ Можно сохранять отчёты в отдельный файл.

Из недостатков — надстройка платная для коммерческого использования (от $39), а бесплатная версия ограничена по функционалу.

4. Способ: подсчёт цветов условного форматирования

Если цвет ячеек задаётся через условное форматирование, то все предыдущие методы (кроме GET.CELL) не сработают. Дело в том, что условное форматирование — это динамическое правило, а не статический цвет. Здесь нужен другой подход: анализировать не цвет, а условие, по которому он применяется.

Допустим, у вас есть правило: «Если значение меньше 0, закрасить ячейку красным». Тогда вместо подсчёта красных ячеек можно просто посчитать количество отрицательных значений:

=СЧЁТЕСЛИ(A1:A100; "<0")

Но что делать, если правило сложнее? Например: «Закрасить ячейку, если она содержит текст "Убыток" или значение меньше 1000». В этом случае поможет комбинация функций:

=СЧЁТЕСЛИМН(B2:B100; "Убыток") + СЧЁТЕСЛИ(B2:B100; "<1000")

Если же правило условного форматирования использует формулу (например, =И(A2<0; C2="Москва")), то вам придётся повторить эту формулу в функции СУММПРОИЗВ:

=СУММПРОИЗВ(--(A2:A100<0); --(C2:C100="Москва"))
Не забудьте ввести эту формулу как массивную (в старых версиях Excel — нажать Ctrl+Shift+Enter).

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

5. Способ: VBA-макрос для точного подсчёта

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

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. В окне проекта найдите вашу книгу (VBAProject(Имя_файла.xlsx)) и кликните правой кнопкой по разделу ModulesInsertModule.
  3. Вставьте в окно следующий код:
    Function CountCellsByColor(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

    CountCellsByColor = count

    End Function

  4. Закройте редактор VBA.
  5. Теперь в любой ячейке можно использовать формулу:
    =CountCellsByColor(A1:A100; C1)

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

⚠️ Внимание: Если цвет ячейки задан через условное форматирование, этот код не сработает. Для таких случаев нужен модифицированный скрипт:

Function CountConditionalFormatCells(rng As Range) As Long

Dim cl As Range

Dim count As Long

count = 0

For Each cl In rng

If cl.DisplayFormat.Interior.Color <> xlNone Then

count = count + 1

End If

Next cl

CountConditionalFormatCells = count

End Function

Чтобы посчитать ячейки конкретного цвета (например, красного), добавьте проверку на RGB-код:

If cl.DisplayFormat.Interior.Color = RGB(255, 0, 0) Then

🔹 Критически важно: Перед использованием макросов сохраните файл в формате .xlsm (с поддержкой макросов), иначе скрипты не будут работать. Также убедитесь, что макросы разрешены в настройках безопасности (ФайлПараметрыЦентр управления безопасностьюПараметры центра...Настройка макросов).

6. Способ: Power Query для сложных таблиц

Если вы работаете с большими массивами данных (тысячи строк) и нуждаетесь в регулярном подсчёте цветных ячеек, стоит обратить внимание на Power Query — инструмент для преобразования и анализа данных, встроенный в Excel 2016 и новее.

Power Query не умеет напрямую анализировать цвета, но можно обойти это ограничение:

  1. Добавьте вспомогательный столбец с формулой, которая будет возвращать код цвета (например, через GET.CELL, как в разделе 2).
  2. Импортируйте данные в Power Query: ДанныеИз таблицы/диапазона.
  3. В редакторе Power Query отфильтруйте строки по коду цвета.
  4. Подсчитайте количество строк после фильтрации.

Пример запроса на языке M (для Power Query):

let

Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

Фильтр = Table.SelectRows(Источник, each [ЦветКода] = 3) // 3 — код красного цвета

in

Фильтр

⚠️ Внимание: Power Query не обновляет данные в реальном времени. Чтобы получить актуальные результаты, нужно вручную обновлять запрос (ДанныеОбновить все).

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

  • ✅ Работает с миллионами строк;
  • ✅ Можно автоматизировать обновление данных;
  • ✅ Поддерживает сложные фильтры (например, «красные ячейки в столбце B, где в столбце C значение > 1000»).

Недостатки:

  • ❌ Требует предварительной подготовки данных (добавление столбца с кодами цветов);
  • ❌ Не работает с условным форматированием без дополнительных скриптов.

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

Чтобы вам было проще ориентироваться, мы собрали ключевые характеристики каждого способа в одной таблице:

Метод Работает с условным форматированием Требует VBA Макс. количество ячеек Сложность
Фильтр по цвету ❌ Нет ❌ Нет 10 000
GET.CELL + СЧЁТЕСЛИ ✅ Да ❌ Нет 100 000 ⭐⭐
Надстройка Color Counter ❌ Нет ❌ Нет 50 (бесплатно) / неогр. (платная)
VBA-макрос ✅ Да ✅ Да Неограничено ⭐⭐⭐
Power Query ❌ Нет (без доп. скриптов) ❌ Нет Миллионы ⭐⭐⭐

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

  • 🔹 Если нужно однократно посчитать ячейки в небольшой таблице → используйте фильтр по цвету.
  • 🔹 Если цвета задаются через условное форматирование → только VBA или GET.CELL.
  • 🔹 Если работаете с большими даннымиPower Query.
  • 🔹 Если нужно регулярно считать цвета без макросов → надстройка.

FAQ: ответы на частые вопросы

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

Да, в Google Таблицах есть экспериментальная функция =COUNTIFBYCOLOR(). Чтобы её включить:

  1. Перейдите в НастройкиЭкспериментальные функции.
  2. Активируйте опцию COUNTIFBYCOLOR.
  3. Используйте формулу: =COUNTIFBYCOLOR(диапазон; "цвет"), где "цвет" можно указать как "red", "#ff0000" или ссылку на ячейку.

Ограничение: функция работает только с ручной заливкой, не поддерживает условное форматирование.

Почему функция GET.CELL возвращает ошибку #ИМЯ?

Ошибка #ИМЯ? появляется, если:

  • Вы не создали именованный диапазон;
  • В формуле опечатка (например, GET_SELL вместо GET.CELL);
  • Ячейка, на которую ссылается формула, удалена.

Решение: проверьте имя диапазона в ФормулыДиспетчер имён и исправьте ссылки.

Как узнать RGB-код цвета ячейки для VBA?

Чтобы получить RGB-код цвета ячейки:

  1. Выделите ячейку с нужным цветом.
  2. Нажмите Alt+F11, чтобы открыть редактор VBA.
  3. Нажмите Ctrl+G, чтобы открыть окно Immediate.
  4. Введите команду: ?ActiveCell.Interior.Color и нажмите Enter.
  5. Вы получите число (например, 255 для красного). Это и есть код цвета.

Для перевода в RGB используйте функцию:

RGB = Hex(ActiveCell.Interior.Color)
Можно ли посчитать ячейки с градиентной заливкой?

Стандартными методами — нет. Градиентная заливка не имеет единого цвета, поэтому ни GET.CELL, ни VBA не смогут её корректно обработать. Единственный выход — заменить градиент на однотонную заливку или использовать надстройку, которая умеет анализировать градиенты (например, Kutools for Excel).

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

Скорее всего, при копировании изменились ссылки на диапазоны в коде VBA. Проверьте:

  • Имя листа в макросе (например, Sheets("Лист1"));
  • Диапазон анализа (возможно, скопированная таблица находится в другом месте).

Решение: обновите ссылки в коде или используйте ActiveSheet вместо жёстко прописанного имени листа.