Вы когда-нибудь сталкивались с ситуацией, когда в таблице Excel часть данных выделена цветом, и нужно быстро посчитать именно эти ячейки? Например, красным отмечены просроченные заказы, зелёным — выполненные, а жёлтым — в процессе. Вручную пересчитывать сотни строк — не вариант. К сожалению, в стандартном арсенале Excel нет функции вроде =СЧЁТЕСЛИПОЦВЕТУ(), но обойти это ограничение можно несколькими способами.
В этой статье мы разберём 5 рабочих методов — от простых обходных путей с фильтрацией до автоматизации через VBA. Вы узнаете, как считать ячейки по цвету заполнения или цвета шрифта, какие подводные камни ждут в разных версиях Excel (включая Excel 365 и Excel 2019), и когда лучше использовать тот или иной способ. А ещё — как избежать распространённых ошибок, из-за которых формулы возвращают неверный результат.
Почему в Excel нет встроенной функции для подсчёта по цвету?
Microsoft никогда не добавляла прямую функцию для работы с цветами ячеек, и на то есть причины. Цвет в Excel — это атрибут форматирования, а не значение. Формулы же оперируют именно данными, а не их визуальным представлением. Вот ключевые моменты:
- 🔹 Производительность: обработка цветов требует сканирования каждого пикселя ячейки, что замедляло бы работу с большими таблицами.
- 🔹 Субъективность: один и тот же цвет (например, "светло-голубой") может быть задан разными кодами в
RGBили темами оформления. - 🔹 Альтернативы: Microsoft предлагает использовать
условное форматированиеилисводные таблицыдля анализа данных без привязки к цветам.
Однако для многих задач — например, в финансовом учёте, логистике или проектном менеджменте — цветовая маркировка удобна, и отказываться от неё нерационально. Поэтому пользователи нашли обходные пути, которые мы и рассмотрим ниже.
Способ 1: Фильтрация по цвету (без формул)
Самый простой метод, который работает во всех версиях Excel — ручная фильтрация. Он не требует знания формул или макросов, но подходит только для одноразовых задач.
- Выделите диапазон с данными (включая заголовки столбцов).
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Нажмите на стрелочку фильтра в заголовке столбца и выберите
Фильтр по цвету→Цвет заполнения(илиЦвет текста). - Укажите нужный цвет — Excel отобразит только ячейки с этим форматированием.
- Количество видимых строк в фильтре и будет искомым значением.
⚠️ Внимание: этот метод не даёт точного числа — только визуальную оценку. Если нужно записать результат в отдельную ячейку, используйте =СЧЁТЗ() для видимого диапазона после применения фильтра.
Способ 2: Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (для цвета шрифта)
Если вам нужно посчитать ячейки по цвету текста, а не фона, можно использовать малоизвестную функцию =ПОЛУЧИТЬ.ЯЧЕЙКУ(). Она возвращает информацию о форматировании, но работает только в Excel для Windows (не поддерживается в Excel Online или Mac).
Формула для подсчёта ячеек с красным текстом в диапазоне A1:A100:
=СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38; A1:A100)=3))
Расшифровка параметров:
- 🔢
38— код для цвета шрифта. - 🔢
3— код красного цвета в палитре Excel (для зелёного используйте4, синего —5и т.д.).
| Цвет текста | Код в ПОЛУЧИТЬ.ЯЧЕЙКУ | Пример формулы |
|---|---|---|
| Чёрный | 1 | =СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1:A10)=1)) |
| Красный | 3 | =СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1:A10)=3)) |
| Зелёный | 4 | =СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1:A10)=4)) |
| Синий | 5 | =СУММПРОИЗВ(--(ПОЛУЧИТЬ.ЯЧЕЙКУ(38;A1:A10)=5)) |
⚠️ Внимание: функция ПОЛУЧИТЬ.ЯЧЕЙКУ работает только как формула массива. В старых версиях Excel (до 2019) её нужно вводить через Ctrl+Shift+Enter. В Excel 365 достаточно просто нажать Enter.
Способ 3: VBA-макрос для подсчёта по цвету фона
Для автоматизации подсчёта ячеек по цвету заполнения придётся использовать VBA. Этот метод универсален и работает во всех версиях Excel, включая Mac. Ниже приведён код, который считает ячейки с указанным цветом в выделенном диапазоне.
Как добавить макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Вставьте следующий код:
Function CountByColor(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
CountByColor = count
End Function
Как использовать:
- Выделите ячейку, в которой хотите увидеть результат.
- Введите формулу:
=CountByColor(A1:A100; C1), гдеC1— ячейка с образцом цвета. - Нажмите
Enter.
Сохраните файл как .xlsm (с поддержкой макросов)|Включите макросы в настройках безопасности|Проверьте, что цвет образца (C1) точно совпадает с цветом ячеек в диапазоне|Не используйте merged cells (объединённые ячейки) в диапазоне подсчёта-->
⚠️ Внимание: макрос сравнивает точные значения цвета в формате RGB. Если ячейки окрашены через условное форматирование или темы оформления, результат может быть неточным. В таком случае используйте модифицированную версию кода с сравнением по ColorIndex:
Код для ColorIndex вместо RGB
Function CountByColorIndex(rng As Range, colorIndex As Integer) As Long
Dim cl As Range
Dim count As Long
count = 0
For Each cl In rng
If cl.Interior.ColorIndex = colorIndex Then
count = count + 1
End If
Next cl
CountByColorIndex = count
End Function
=CountByColorIndex(A1:A100; 3) (где 3 — индекс красного цвета).Способ 4: Условное форматирование + вспомогательный столбец
Если вы не хотите использовать VBA, можно пойти на хитрость: создать вспомогательный столбец, который будет отмечать цветные ячейки, а затем считать их стандартными функциями. Этот метод работает даже в Excel Online.
Алгоритм действий:
- Добавьте справа от ваших данных новый столбец (например,
B). - В первой ячейке столбца (
B1) введите формулу:
Замените=ЕСЛИ(И(A1<>""; ЦВЕТ(A1)=3); 1; 0)3на код нужного цвета (см. таблицу в Способе 2). - Растяните формулу на весь диапазон.
- Используйте
=СУММ(B1:B100), чтобы посчитать количество "1" (т.е. цветных ячеек).
🔹 Плюсы метода: не требует макросов, работает в облачных версиях Excel.
🔹 Минусы: нужно вручную обновлять формулы при изменении данных, а функция ЦВЕТ() — пользовательская и требует предварительной настройки (см. спойлер ниже).
Как добавить функцию ЦВЕТ() в Excel
1. Откройте редактор VBA (Alt+F11).
2. Вставьте новый модуль (Insert → Module).
3. Добавьте код:
Function ЦВЕТ(rng As Range) As Integer
ЦВЕТ = rng.Font.ColorIndex
End Function
4. Сохраните файл как .xlsm и используйте функцию в таблице.
Способ 5: Power Query (для Excel 2016 и новее)
Единственный метод, который корректно обрабатывает цвета из условного форматирования — использование Power Query. Этот инструмент доступен в Excel 2016+ и Excel 365, а также в Power BI. Он позволяет преобразовать данные так, чтобы цвет стал отдельным столбцом, который затем можно анализировать.
Пошаговая инструкция:
- Выделите ваш диапазон данных и перейдите на вкладку
Данные→Из таблицы/диапазона(илиGet Data → From Table/Range). - В открывшемся редакторе Power Query добавьте пользовательский столбец:
Этот шаг нужен для фиксации структуры данных.= if [ВашСтолбец] <> null then Text.From(Value.Type([ВашСтолбец])) else null - Добавьте ещё один столбец с формулой для извлечения цвета:
= try Record.Field(Excel.CurrentWorkbook(){[Name="ВашаТаблица"]}[Content]{0}[ВашСтолбец], "Format")[Fill][BackgroundColor] otherwise null - Замените
ВашаТаблицаиВашСтолбецна реальные имена. - Нажмите
Close & Load, чтобы вернуть данные в Excel. - Теперь используйте
СЧЁТЕСЛИдля нового столбца с цветами.
⚠️ Внимание: этот метод требует знания основ Power Query и может показаться сложным новичкам. Однако он единственный корректно работает с цветами, назначенными через условное форматирование, где стандартные способы дают сбои.
Сравнение методов: какой выбрать?
Выбор способа зависит от вашей задачи, версии Excel и уровня подготовки. Ниже таблица поможет определиться:
| Метод | Подходит для цвета | Требует VBA? | Работает с условным форматированием? | Сложность |
|---|---|---|---|---|
| Фильтрация | Фона и текста | Нет | Да | ⭐ |
| ПОЛУЧИТЬ.ЯЧЕЙКУ | Только текста | Нет | Нет | ⭐⭐ |
| VBA-макрос | Фона и текста | Да | Частично | ⭐⭐⭐ |
| Вспомогательный столбец | Фона и текста | Да (для функции ЦВЕТ) | Нет | ⭐⭐ |
| Power Query | Фона и текста | Нет | Да | ⭐⭐⭐⭐ |
🔹 Для разовых задач подойдёт фильтрация или ПОЛУЧИТЬ.ЯЧЕЙКУ.
🔹 Для регулярного использования лучше настроить VBA или Power Query.
🔹 Для облачных версий Excel (Online, Mac) остаётся только фильтрация или вспомогательный столбец.
FAQ: Частые вопросы о подсчёте по цвету в Excel
Можно ли посчитать ячейки по цвету без VBA?
Да, но с ограничениями. Используйте фильтрацию (Способ 1) или функцию ПОЛУЧИТЬ.ЯЧЕЙКУ (Способ 2) для цвета текста. Для цвета фона без VBA подойдёт только вспомогательный столбец (Способ 4), но он требует предварительной настройки пользовательской функции.
Почему макрос считает не все ячейки нужного цвета?
Наиболее вероятные причины:
- 🔸 Цвета назначены через
условное форматирование— макрос сравниваетRGB-значения, которые могут отличаться от визуального цвета. - 🔸 В диапазоне есть
объединённые ячейки (merged cells)— они обрабатываются как одна. - 🔸 Цвет образца (ячейка
C1в примере) не совпадает с цветами в диапазоне. Проверьте код цвета черезVBA:MsgBox Range("A1").Interior.Color
Как посчитать ячейки с градиентной заливкой?
Стандартные методы не работают с градиентами. Единственный вариант — VBA-макрос, который проверяет тип заливки:
Function CountGradient(rng As Range) As Long
Dim cl As Range, count As Long
For Each cl In rng
If cl.Interior.Pattern = xlPatternLinearGradient Then
count = count + 1
End If
Next cl
CountGradient = count
End Function
Используйте как: =CountGradient(A1:A100).
Можно ли автоматически обновлять подсчёт при изменении цветов?
Да, но только если использовать:
- 🔸 VBA-макрос с событием (например,
Worksheet_Change), который будет пересчитывать значения при изменении данных. - 🔸 Power Query с последующим обновлением запроса (
Данные → Обновить все).
Фильтрация и ПОЛУЧИТЬ.ЯЧЕЙКУ не обновляются автоматически.
Есть ли добавки (add-ins) для работы с цветами в Excel?
Да, несколько популярных надстроек решают эту задачу:
- 🔹 Kutools for Excel — имеет функцию
Count by Colorс визуальным интерфейсом. - 🔹 Ablebits — включает инструменты для анализа цветов и условного форматирования.
- 🔹 ASAP Utilities — бесплатная надстройка с опциями для работы с цветами.
⚠️ Внимание: перед установкой добавок проверьте их совместимость с вашей версией Excel и источником загрузки (риск вирусов при скачивании с неофициальных сайтов).