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

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

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

1. Метод фильтрации: быстрый обходной путь без формул

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

Вот как это сделать:

  • 📌 Выделите диапазон ячеек, в котором нужно посчитать цветные элементы (например, A1:D100).
  • 🔍 Перейдите на вкладку ГлавнаяСортировка и фильтрФильтр.
  • 🎨 Нажмите на стрелку фильтра в заголовке столбца и выберите Фильтр по цветуЦвет заливки (или Цвет текста).
  • 📊 В нижней части экрана Excel покажет количество отфильтрованных строк — это и будет искомое значение.

Преимущество метода: не требует подготовки данных и работает даже в защищённых листах. Но есть и минусы:

  • ❌ Не подходит для динамического подсчёта (при изменении цвета придётся фильтровать заново).
  • ❌ Нельзя использовать в формулах или сводных таблицах.
  • ❌ Если в диапазоне есть скрытые строки, фильтр может дать неверный результат.
⚠️ Внимание: Фильтрация по цвету учитывает только видимые ячейки. Если в вашем диапазоне есть скрытые строки или столбцы, их содержимое не будет учтено в результатах. Перед фильтрацией проверьте настройки видимости через Главная → Формат → Скрыть/Отобразить.
📊 Как часто вам нужно считать цветные ячейки в Excel?
Ежедневно
Несколько раз в неделю
Редко, но методично
Первый раз столкнулся с такой задачей

2. Функция GET.CELL: скрытый инструмент для опытных пользователей

Мало кто знает, но в Excel есть скрытая функция GET.CELL, которая может возвращать информацию о формате ячейки, включая цвет. Она не отображается в мастер-функций, но её можно использовать через имя диапазона.

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

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

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

  4. В ячейке 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

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код выше в модуль (в меню выберите Insert → Module).
  3. Вернитесь в 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):

  1. Скачайте файл morefunc.xll и сохраните его на жёстком диске.
  2. В Excel перейдите в Файл → Параметры → Надстройки.
  3. Внизу окна выберите Управление: Надстройки ExcelПерейти.
  4. Нажмите Обзор, найдите скачанный файл и подтвердите установку.

После установки в Excel появится новая функция:

=COUNTBYCOLOR(диапазон; образец_цвета; [тип_цвета])

Где [тип_цвета] может быть:

  • 1 — цвет заливки (по умолчанию),
  • 2 — цвет шрифта.

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

Если вам нужно регулярно работать с цветными ячейками, возможно, стоит пересмотреть сам подход к разметке данных. Вместо ручного окрашивания ячеек можно использовать условное форматирование на основе значений в вспомогательном столбце. Это позволит применять стандартные функции СЧЁТЕСЛИ или СУММЕСЛИ.

Пример реализации:

  1. Добавьте справа от ваших данных новый столбец (например, Status).
  2. Заполните его значениями, соответствующими цветам (например, "Красный", "Зелёный").
  3. Примените условное форматирование:
    • Выделите исходный диапазон (например, A1:B100).
    • Перейдите в Главная → Условное форматирование → Создать правило.
    • Выберите Форматировать только ячейки, которые содержат.
    • В поле Форматировать только ячейки с укажите Значение → равняется → Красный (ссылка на ячейку во вспомогательном столбце).
    • Задайте нужный цвет заливки и сохраните правило.
  • Теперь можно использовать стандартные функции:
    =СЧЁТЕСЛИ(C:C; "Красный")

    где C:C — вспомогательный столбец.

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

    • ✅ Нет зависимости от цветов — данные хранятся в текстовом виде.
    • ✅ Можно использовать СУММЕСЛИМН, СЧЁТЕСЛИМН и другие функции.
    • ✅ Легко обновлять правила форматирования (например, изменить цвет для всех "красных" ячеек за один клик).
    ⚠️ Внимание: Если вы импортируете данные из внешних источников (например, или SQL), добавьте вспомогательный столбец на этапе импорта. Вручную заполнять его для тысяч строк неэффективно.

    6. Power Query: для работы с большими массивами данных

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

    Инструкция:

    1. Выделите ваш диапазон и перейдите на вкладку ДанныеИз таблицы/диапазона (в группе Получить и преобразовать данные).
    2. В открывшемся редакторе Power Query добавьте пользовательский столбец:
      = if [Column1] = "Ваше условие" then "Красный" else "Зелёный"

      Здесь вместо "Ваше условие" укажите критерий, по которому ячейки окрашены (например, [Column1] < 0 для отрицательных значений).

    3. Добавьте ещё один столбец для подсчёта:
      = Table.AddColumn(#"Добавлен пользовательский столбец", "Count", each 1)
    4. Сгруппируйте данные по цвету: выделите столбец с цветами → ПреобразоватьГруппировка → укажите Сумма по столбцу Count.
    5. Нажмите Закрыть и загрузить, чтобы вернуть результаты в Excel.

    Этот метод особенно полезен, если:

    • 📈 Вам нужно анализировать десятки тысяч строк.
    • 🔄 Данные регулярно обновляются (например, ежедневные отчёты).
    • 🎨 Цвета ячеек зависят от сложных условий (например, комбинации значений в нескольких столбцах).

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

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

    Чтобы помочь вам определиться, мы собрали сравнительную таблицу всех способов с учётом их плюсов, минусов и областей применения.

    Метод Сложность Работает с любыми цветами? Динамический подсчёт? Когда использовать
    Фильтрация Да Нет Для разовых задач в небольших таблицах
    GET.CELL ⭐⭐ Нет (только стандартная палитра) Да Если нужны формулы без VBA и цвета стандартные
    VBA ⭐⭐⭐ Да Да Для автоматизации и работы с нестандартными цветами
    Надстройки Да Да Если не хочется писать код и нужны дополнительные функции
    Вспомогательный столбец ⭐⭐ Неприменимо Да Для долговременных проектов с регулярным анализом
    Power Query ⭐⭐⭐ Неприменимо Да Для больших данных с чёткой логикой окрашивания

    Если вы всё ещё сомневаетесь, ответьте на два вопроса:

    1. Нужно ли вам обновлять подсчёт при изменении данных?
      • ✅ Да → выбирайте VBA, надстройки или вспомогательный столбец.
      • ❌ Нет → хватит фильтрации или GET.CELL.
  • Используете ли вы нестандартные цвета (RGB)?
    • ✅ Да → только VBA или надстройки.
    • ❌ Нет → подойдёт любой метод.

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

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

    Да, для этого:

    • В методе с GET.CELL используйте код параметра 24 вместо 38.
    • В VBA-коде замените Interior.Color на Font.Color.
    • В надстройке Morefunc укажите третий аргумент 2 (например, =COUNTBYCOLOR(A1:A100;B1;2)).
    Почему моя функция GET.CELL возвращает #ИМЯ?

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

    1. Вы не создали имя диапазона с функцией GET.CELL.
    2. В формуле отсутствует восклицательный знак перед адресом ячейки (должно быть !A1, а не A1).
    3. Вы используете неанглийскую версию Excel, где название функции может отличаться (например, GET.CELL вместо GET.CELL — проверьте локализацию).
    Как посчитать ячейки с градиентной заливкой?

    К сожалению, ни один из описанных методов не работает с градиентной заливкой, так как Excel не предоставляет API для чтения таких форматов. Альтернативные варианты:

    • Замените градиент на сплошной цвет (например, средний оттенок градиента).
    • Используйте вспомогательный столбец с текстовыми метками.
    • Если градиент зависит от значения ячейки (например, тепловая карта), воспользуйтесь Power Query для анализа исходных данных.
    Можно ли посчитать цветные ячейки в Google Sheets?

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

    1. Используйте 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;

      }

    2. Установите надстройку Color Counter из Google Workspace Marketplace.
    3. Примените вспомогательный столбец с условным форматированием (как в 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