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

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

В этой статье мы разберём 5 проверенных методов, как автоматизировать подсчёт строк по цвету: от простых фильтров (доступных даже новичкам) до мощных VBA-макросов для опытных пользователей. Все решения протестированы на Excel 2010–2026, Excel для Mac и Google Таблицах (с оговорками). Вы узнаете, какой способ выбрать в зависимости от задачи, и получите готовые формулы для копирования.

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

На первый взгляд странно, что в Excel нет встроенной функции вроде COUNTIF_BY_COLOR. Причина кроется в архитектуре программы: цвет ячейки — это часть её форматирования, а не содержимого. Функции типа COUNTIF или SUMIF анализируют только значения (числа, текст, даты), но не свойства оформления.

Более того, цвет в Excel может быть задан разными способами:

  • 🎨 Условное форматирование (динамическое, зависит от значений)
  • 🖌️ Ручная заливка (статическое форматирование)
  • 📊 Цвета из стилей таблиц (например, "Хороший", "Плохой" в формате таблицы)

Это усложняет универсальный подсчёт. Однако есть обходные пути — и мы их рассмотрим.

📊 Какой версии Excel вы пользуетесь?
Excel 2010-2016
Excel 2019-2026
Excel для Mac
Google Таблицы
Другая

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

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

Инструкция:

  1. Выделите диапазон с данными (включая заголовки).
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Нажмите на стрелочку фильтра в столбце, где применён цвет.
  4. Выберите Фильтр по цветуЗаливка и укажите нужный цвет.
  5. Excel отобразит только строки с выбранным цветом. Количество видно в строке состояния (внизу окна).

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

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

Проверьте, что в диапазоне нет скрытых строк

Запомните исходное количество строк (чтобы вернуть фильтр в начальное состояние)

Сделайте копию данных, если работаете с важным файлом-->

Способ 2: Функция GET.CELL (для условного форматирования)

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

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

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

    где 38 — код цвета заливки (формат числа).

  5. Теперь в любой ячейке можно использовать формулу:
    =ЦветЯчейки

    и она вернёт числовой код цвета для A1.

Чтобы посчитать все ячейки с определённым цветом, создайте столбец с формулой и используйте COUNTIF. Например, если зелёный цвет соответствует коду 5296274:

=COUNTIF(Диапазон_с_кодами; 5296274)

Как узнать код цвета для GET.CELL?

Выделите ячейку с нужным цветом → нажмите Alt+F11 → в редакторе VBA выполните в окне Immediate команду:

? ActiveCell.Interior.Color

Отобразится числовой код цвета (например, 5296274 для зелёного).

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

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

Код макроса:

Sub CountRowsByColor()

Dim rng As Range, cell As Range, colorToFind As Long

Dim count As Integer, firstAddress As String

' Запрашиваем у пользователя цвет

On Error Resume Next

Set cell = Application.InputBox( _

"Выберите ячейку с нужным цветом:", _

"Выбор цвета", _

Type:=8).Cells(1, 1)

On Error GoTo 0

If cell Is Nothing Then Exit Sub

colorToFind = cell.Interior.Color

' Запрашиваем диапазон для поиска

On Error Resume Next

Set rng = Application.InputBox( _

"Выберите диапазон для подсчёта:", _

"Выбор диапазона", _

Type:=8)

On Error GoTo 0

If rng Is Nothing Then Exit Sub

' Подсчёт строк

count = 0

For Each cell In rng

If cell.Interior.Color = colorToFind Then

If firstAddress = "" Then firstAddress = cell.Address

count = count + 1

End If

Next cell

' Вывод результата

If count > 0 Then

MsgBox "Найдено " & count & " ячеек с выбранным цветом." & vbCrLf & _

"Первая ячейка: " & firstAddress, vbInformation

Else

MsgBox "Ячеек с выбранным цветом не найдено.", vbExclamation

End If

End Sub

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (InsertModule).
  3. Закройте редактор и запустите макрос через Alt+F8.
  4. Следуйте подсказкам: сначала выберите ячейку с нужным цветом, затем — диапазон для поиска.

⚠️ Внимание: Макрос считает ячейки, а не строки. Если в строке несколько ячеек с искомым цветом, она будет посчитана многократно. Чтобы считать уникальные строки, модифицируйте код, добавив проверку на номер строки (cell.Row).

Способ 4: Power Query для продвинутых пользователей

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

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

  1. Выделите диапазон с данными и нажмите ДанныеИз таблицы/диапазона (или Get & Transform Data в английской версии).
  2. В открывшемся редакторе Power Query добавьте пользовательский столбец (Добавить столбецПользовательский столбец).
  3. Введите формулу для извлечения цвета (на языке M):
    = if [YourColumnName] <> null then Color.ToText([YourColumnName]) else null

    Замените YourColumnName на имя вашего столбца.

  4. Отфильтруйте новый столбец по нужному цвету (например, "FF00FF00" для зелёного).
  5. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel. Количество строк будет в строке состояния.

Power Query не распознаёт цвета, применённые через условное форматирование — только ручную заливку. Если вам нужно работать с динамическими цветами, комбинируйте этот метод с VBA или используйте надстройку (см. следующий раздел).

Способ 5: Надстройки и сторонние инструменты

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

Надстройка Функционал Совместимость Стоимость
ColorCounter Подсчёт ячеек/строк по цвету, суммирование Excel 2010–2026, Mac Бесплатно
Ablebits Пакет из 50+ функций, включая работу с цветами Excel 2013–2026, Windows Платная ($39–$99)
Kutools for Excel Функция Count by Color, поддержка условного форматирования Excel 2007–2026, Windows/Mac Платная ($39–$69)

Как установить надстройку:

  • 📥 Скачайте файл надстройки (.xlam или .xlsm) с официального сайта.
  • 🔧 Откройте Excel, перейдите в ФайлПараметрыНадстройки.
  • 🔍 Нажмите Перейти рядом с Управление: Надстройки Excel.
  • 📂 В окне надстроек нажмите Обзор, выберите скачанный файл и подтвердите установку.

⚠️ Внимание: Надстройки от сторонних разработчиков могут содержать вредоносный код. Скачивайте их только с официальных сайтов (например, ablebits.com или extendoffice.com). Перед установкой проверьте файл антивирусом.

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

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

Метод Подходит для Плюсы Минусы
Фильтр по цвету Разовых подсчётов, небольших таблиц Не требует формул, работает везде Не сохраняет результат, считает строки (не ячейки)
GET.CELL Условного форматирования, статических цветов Не нужны макросы, работает в формулах Сложно настроить, не работает с динамическими цветами
VBA-макрос Автоматизации, больших данных, сложных задач Универсален, можно модифицировать Требует знаний VBA, может не работать на Mac
Power Query Регулярной обработки, трансформации данных Мощный инструмент, не требует VBA Не работает с условным форматированием, сложный для новичков
Надстройки Частой работы с цветами, корпоративных задач Простота, расширенный функционал Платные, риски безопасности, зависимость от разработчика

Если вы новичок, начните с фильтра по цвету или GET.CELL. Для продвинутых пользователей лучший выбор — VBA или Power Query. Если работа с цветами — часть вашей ежедневной рутины, установите надстройку.

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

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

Да, для этого модифицируйте VBA-макрос, заменив Interior.Color на Font.Color. Например:

If cell.Font.Color = colorToFind Then

Также в фильтрах можно выбрать Фильтр по цветуЦвет текста.

Почему GET.CELL возвращает 0 для цветных ячеек?

Это происходит, если цвет применён через условное форматирование. Функция GET.CELL распознаёт только ручную заливку. Используйте VBA или проверьте, не перекрывается ли условное форматирование другим правилом (например, более приоритетным).

Как посчитать строки по цвету в Google Таблицах?

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

function countColoredRows() {

const sheet = SpreadsheetApp.getActiveSheet();

const range = sheet.getDataRange();

const colors = range.getBackgrounds();

const targetColor = "#ffff00"; // Жёлтый цвет в HEX

let count = 0;

for (let i = 0; i < colors.length; i++) {

if (colors[i][0] === targetColor) count++;

}

SpreadsheetApp.getUi().alert("Найдено строк: " + count);

}

Чтобы запустить скрипт, откройте РасширенияApps Script.

Макрос работает в Windows, но не на Mac. Почему?

В Excel для Mac некоторые свойства объектов могут отличаться. Например, вместо Interior.Color попробуйте Interior.ColorIndex. Также проверьте, включена ли поддержка VBA в настройках безопасности (ExcelПредпочтенияБезопасность).

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

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