Как посчитать ячейки по цвету в Excel: формулы, фильтры и макросы

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

В этой статье мы разберём 5 рабочих методов, как посчитать ячейки по цвету в Excel — от простых обходных путей до автоматизированных решений с помощью VBA. Вы узнаете, какие способы работают во всех версиях Excel (включая Excel 2010–2023 и Office 365), а где потребуются дополнительные настройки. Особое внимание уделим скрытому ограничению Excel: программа не хранит цвет ячейки как отдельное свойство в формулах, поэтому прямых функций для этой задачи нет. Но это не значит, что решение невозможно!

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

На первый взгляд кажется странным, что в Excel нет встроенной функции вроде СЧЁТЦВЕТ(диапазон; цвет). Причина кроется в архитектуре программы: цвет фона ячейки (fill color) относится к форматированию, а не к данным. Формулы Excel оперируют исключительно значениями, ссылками и логическими выражениями — но не визуальными атрибутами.

Вот что говорит об этом Microsoft в официальной документации:

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

Однако есть обходные пути:

  • 🔹 Фильтрация по цвету — ручной метод, не требующий формул.
  • 🔹 Условное форматирование + вспомогательный столбец — полуавтоматический способ.
  • 🔹 Функции ПОЛУЧИТЬ.ЯЧЕЙКУ + VBA — для опытных пользователей.
  • 🔹 Надстройки и скрипты — если нужно регулярно обрабатывать большие массивы данных.
📊 Как часто вам нужно считать цветные ячейки в Excel?
Ежедневно
Раз в неделю
Редко, но методично
Первый раз столкнулся с такой задачей

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

Самый простой способ — использовать встроенный фильтр Excel по цвету заливки. Он не требует знания формул и работает во всех версиях программы. Подходит для разовых задач, когда нужно быстро оценить количество ячеек определённого цвета.

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

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

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

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

Метод 2: Условное форматирование + вспомогательный столбец

Этот способ подходит, если вам нужно не только посчитать цветные ячейки, но и использовать результат в дальнейших расчётах. Суть метода: создать правило условного форматирования, которое будет автоматически проставлять метку (например, "1") в вспомогательном столбце для всех ячеек нужного цвета. Затем остаётся просто просуммировать эти метки.

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

  1. Добавьте справа от ваших данных вспомогательный столбец (например, столбец E).
  2. Выделите диапазон основных данных (например, A1:D50).
  3. Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
  4. Выберите тип правила Использовать формулу для определения форматируемых ячеек.
  5. В поле формулы введите:
    =A1<>""

    (это пример — реальную формулу нужно адаптировать под вашу задачу, см. примеры ниже).

  6. Нажмите Формат, перейдите на вкладку Заливка и выберите тот же цвет, который используется в вашей таблице.
  7. В вспомогательном столбце (E1) введите формулу:
    =ЕСЛИ(ИЛИ(A1="";СЧЁТЕСЛИ(A1;"*"))=0;0;1)

    и растяните её на весь диапазон.

  8. Теперь в любой ячейке можно использовать =СУММ(E1:E50), чтобы получить количество цветных ячеек.

Примеры формул для условного форматирования в зависимости от задачи:

ЦельФормула для правилаПример
Подсчёт всех непустых ячеек=A1<>""Метки проставятся во всех ячейках с данными
Подсчёт ячеек с определённым текстом=A1="Срочно"Только ячейки со словом "Срочно"
Подсчёт ячеек с числом больше 100=A1>100Цветные ячейки, где значение > 100
Подсчёт ячеек с ошибками=ЕОШ(A1)Ячейки с формулами, возвращающими ошибку

Создайте резервную копию файла|Проверьте, что во вспомогательном столбце нет данных|Убедитесь, что цвет заливки в правиле совпадает с цветом в таблице|Протестируйте формулу на небольшом диапазоне-->

Метод 3: Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (GET.CELL) + VBA

Для опытных пользователей, готовых работать с макросами, есть более гибкое решение — использование функции ПОЛУЧИТЬ.ЯЧЕЙКУ (GET.CELL). Эта функция недоступна в стандартном интерфейсе Excel, но её можно активировать через имя диапазона и небольшой VBA-код.

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

  • 🔹 Работает с любым цветом, включая градиенты и пользовательские палитры.
  • 🔹 Можно подсчитывать цвет не только фона, но и шрифта.
  • 🔹 Результат обновляется автоматически при изменении цвета ячеек.

Инструкция:

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

    ColorCount = count

    End Function

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

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

⚠️ Внимание: Если ваш файл Excel будет открыт на другом компьютере, где не установлен макрос, формула вернёт ошибку #ИМЯ?. Чтобы избежать этого, сохраните файл в формате .xlsm (с поддержкой макросов) и предупредите коллег о необходимости включить макросы.
Как узнать код цвета ячейки?

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

Debug.Print ActiveCell.Interior.Color

Код отобразится в окне Immediate Window (нажмите Ctrl+G, если оно не видно).

Метод 4: Надстройки для подсчёта цветных ячеек

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

Популярные надстройки:

  • 🔹 Kutools for Excel — включает функцию Count by Color, которая подсчитывает ячейки по цвету фона или шрифта. Поддерживает динамические диапазоны и условное форматирование.
  • 🔹 Ablebits — предлагает инструмент Color Coding с возможностью фильтрации и подсчёта по цветам.
  • 🔹 ASAP Utilities — бесплатная надстройка с функцией Count cells with specific formatting.

Как установить надстройку (на примере Kutools):

  1. Скачайте установщик с официального сайта.
  2. Закройте Excel и запустите установку.
  3. После установки откройте Excel. Надстройка появится на новой вкладке ленты.
  4. Выделите диапазон и выберите KutoolsCount by Color.
  5. В открывшемся окне укажите цвет и нажмите Count.

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

  • 🔹 Не требуют знания VBA.
  • 🔹 Работают в защищённых листах.
  • 🔹 Часто включают дополнительные функции (например, замену цвета, копирование форматирования).
НадстройкаБесплатная версияПодсчёт по цвету фонаПодсчёт по цвету шрифтаДинамическое обновление
Kutools for Excel30-дневный триал
AblebitsОграниченная
ASAP Utilities

Метод 5: Power Query для продвинутых пользователей

Если вы работаете с Excel 2016 или новее (включая Office 365), у вас есть доступ к мощному инструменту Power Query. Хотя он не умеет напрямую считывать цвет ячеек, его можно использовать в комбинации с другими методами для автоматизации процесса.

Сценарий применения:

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

Преимущества Power Query:

  • 🔹 Автоматически обновляет результаты при изменении исходных данных.
  • 🔹 Можно интегрировать с другими источниками (SQL, CSV, веб).
  • 🔹 Поддерживает сложные преобразования (объединение таблиц, сводные операции).

Пример кода на языке M для фильтрации по вспомогательному столбцу:

let

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

Фильтр = Table.SelectRows(Источник, each ([Метка] = 1)),

ДобавленИндекс = Table.AddIndexColumn(Фильтр, "Индекс", 1, 1, Int64.Type),

ПоследнийИндекс = ДобавленИндекс{List.Count(ДобавленИндекс)[Индекс] - 1}[Индекс] + 1

in

ПоследнийИндекс

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

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

МетодСложностьТребует VBAДинамическое обновлениеРаботает в защищённых листахЛучше для
Фильтр по цветуРазовых задач, небольших таблиц
Условное форматирование + вспомогательный столбец⭐⭐Регулярных отчётов, средних таблиц
Функция ПОЛУЧИТЬ.ЯЧЕЙКУ + VBA⭐⭐⭐Автоматизации, больших массивов данных
Надстройки (Kutools, Ablebits)Корпоративного использования, стандартизации
Power Query⭐⭐⭐Сложных трансформаций, интеграции с внешними данными

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

  • 🔹 Если вам нужно один раз посчитать цветные ячейки — используйте фильтр по цвету (метод 1).
  • 🔹 Если требуется автоматическое обновление и вы не боитесь формул — условное форматирование + вспомогательный столбец (метод 2).
  • 🔹 Для больших таблиц (тысячи строк) или сложной логикиVBA (метод 3) или надстройки (метод 4).
  • 🔹 Если вы работаете в Excel 2016+ и уже используете Power Query — интегрируйте подсчёт цветов в существующие запросы (метод 5).

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

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

Да, для этого подойдут те же методы, но с небольшими изменениями:

  • В фильтре выберите Фильтр по цвету шрифта вместо цвета заливки.
  • В VBA используйте свойство Font.Color вместо Interior.Color.
  • Надстройки вроде Kutools также поддерживают подсчёт по цвету текста.
Почему функция ПОЛУЧИТЬ.ЯЧЕЙКУ возвращает ошибку #ИМЯ?

Эта функция не доступна напрямую в Excel. Чтобы её использовать, нужно:

  1. Создать имя диапазона (вкладка ФормулыДиспетчер имёнСоздать).
  2. В поле Имя введите, например, GetCell.
  3. В поле Диапазон введите:
    =ПОЛУЧИТЬ.ЯЧЕЙКУ(42;!A1)

    где 42 — код для цвета фона (см. документацию Microsoft).

После этого в ячейках можно использовать =GetCell.

Как посчитать ячейки с градиентной заливкой?

Стандартные методы (фильтр, условное форматирование) не работают с градиентами. Решения:

  • 🔹 Используйте VBA с проверкой свойства Interior.Pattern (для градиентов оно будет отлично от xlSolid).
  • 🔹 Замените градиент на сплошной цвет (если это допустимо для вашей задачи).
  • 🔹 Надстройки вроде Kutools могут распознавать некоторые типы градиентов.
Можно ли посчитать цветные ячейки в Google Таблицах?

В Google Sheets также нет встроенной функции для подсчёта по цвету, но есть обходные пути:

  • 🔹 Используйте Google Apps Script (аналог VBA). Пример скрипта:
    function countColoredCells(range, color) {
    

    var sheet = SpreadsheetApp.getActiveSheet();

    var data = sheet.getRange(range).getValues();

    var bgColors = sheet.getRange(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;

    }

  • 🔹 Установите надстройки из Google Workspace Marketplace (например, Power Tools).
Почему макрос для подсчёта цветов не работает в Excel Online?

Excel Online (веб-версия) не поддерживает выполнение VBA-макросов по соображениям безопасности. Альтернативы:

  • 🔹 Используйте настольную версию Excel для запуска макросов.
  • 🔹 Применяйте надстройки, совместимые с Excel Online (например, Office JS API).
  • 🔹 Для простых задач подойдёт фильтр по цвету (метод 1).