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

Почему стандартная функция СУММ не работает с цветными ячейками?

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

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

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

Метод 1: Фильтрация по цвету + функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ

Самый простой способ — использовать встроенную фильтрацию по цвету. Он не требует знания формул и работает даже в Excel 2010. Алгоритм:

  1. Выделите диапазон с данными (включая заголовки).
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Нажмите на стрелку фильтра в заголовке столбца → Фильтр по цвету → выберите нужный цвет фона.
  4. Внизу таблицы добавьте функцию =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9; диапазон), где 9 — код суммирования.

Плюсы: не нужны формулы, работает с условным форматированием.

Минусы: требует ручного включения фильтра, не автоматизируется.

Цвет ячейки Формула для фильтра Пример результата
Красный =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9; B2:B100) 1500 (сумма красных ячеек)
Зелёный =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9; C2:C100) 800
Жёлтый =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(109; D2:D100) Ошибка #ЗНАЧ! (неверный код)
⚠️ Внимание: Если в вашей таблице есть скрытые строки, функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ проигнорирует их даже без фильтра. Используйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ(109; ...) для учёта скрытых данных.

Метод 2: Пользовательская функция на VBA для ручной заливки

Когда цвет ячейки задан вручную (не условным форматированием), поможет макрос. Этот метод требует разового включения VBA, но затем работает как обычная функция.

Откройте редактор VBA (Alt+F11), вставьте новый модуль (Insert → Module) и добавьте код:

Function SumByColor(rng As Range, color As Range) As Double

Dim cl As Range, sum As Double

sum = 0

For Each cl In rng

If cl.Interior.Color = color.Interior.Color Then

sum = sum + cl.Value

End If

Next cl

SumByColor = sum

End Function

Теперь в ячейке можно использовать:

=SumByColor(A1:A10; C1)

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

  • 🔹 Работает с любыми цветами, включая градиенты (если цвет однородный).
  • 🔹 Можно модифицировать для суммирования по цвету шрифта (замените Interior.Color на Font.Color).
  • 🔹 В Excel Online не поддерживается (требуется настольная версия).
Как проверить код цвета ячейки?

Чтобы узнать точный код цвета заливки, используйте функцию =GET.CELL(38; ссылка_на_ячейку). Для её активации: Формулы → Определённые имена → Использовать в формуле.

Метод 3: Формула массива для условного форматирования

Если цвет ячейки задаётся условным форматированием, предыдущий метод не сработает — VBA не видит динамические цвета. Здесь поможет комбинация функций СУММПРОИЗВ и -- (двойное отрицание).

Предположим, у вас правило: "Если значение > 100, залить красным". Тогда сумму красных ячеек в диапазоне A1:A10 даст формула:

=СУММПРОИЗВ(A1:A10; --(A1:A10>100))

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

=СУММПРОИЗВ(B2:B100; --(C2:C100="Да"))

где столбец C содержит текстовое условие для условного форматирования.

📊 Какой метод вы предпочитаете для работы с цветами в Excel?
Фильтрация
VBA
Формулы массива
Условное форматирование+СУММЕСЛИ
⚠️ Внимание: Формулы массива в новых версиях Excel (365, 2021) могут требовать подтверждения клавишами Ctrl+Shift+Enter только в режиме совместимости. В динамических массивах достаточно нажать Enter.

Метод 4: Power Query для сложных таблиц

Если ваши данные импортируются из внешних источников или требуют сложной обработки, Power Query станет спасением. Этот инструмент позволяет создавать столбцы на основе цвета заливки, а затем суммировать их.

Алгоритм:

  1. Выделите таблицу → ДанныеИз таблицы/диапазонаExcel 2016+).
  2. В редакторе Power Query добавьте пользовательский столбец с формулой:
    = if [Column1] > 100 then "Красный" else "Зелёный"

    (замените условие на своё).

  3. Сгруппируйте данные по новому столбцу (Преобразовать → Группировка) и выберите операцию Сумма.
  4. Загрузите результат обратно в Excel.

Power Query — единственный метод, который сохраняет связь с исходными данными: при обновлении источника суммы пересчитываются автоматически.

Удалить объединённые ячейки|Проверить типы данных (числа vs текст)|Зафиксировать заголовки|Удалить пустые строки/столбцы-->

Метод 5: Надстройка "Color Sum" (для новичков)

Если вам не хочется разбираться в формулах или VBA, воспользуйтесь бесплатными надстройками. Одна из самых популярных — Color Sum от ASAP Utilities.

Установка:

  1. Скачайте ASAP Utilities с официального сайта.
  2. В Excel перейдите в Файл → Параметры → НадстройкиПерейти.
  3. Выберите загруженный файл и активируйте надстройку.
  4. В меню ASAP Utilities найдите Formulas → Sum by color.

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

  • 🔹 Интуитивный интерфейс без кода.
  • 🔹 Поддержка градиентов и узоров.
  • 🔹 Работает в Excel 2007–2023.

Недостатки:

  • 🔹 Требует установки стороннего ПО.
  • 🔹 Может конфликтовать с корпоративными политиками безопасности.

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

Выбор способа зависит от трёх факторов:

  1. Источник цвета: ручная заливка или условное форматирование.
  2. Версия Excel: в Excel Online не работает VBA, а в Excel 2010 нет Power Query.
  3. Частота использования: для разовых задач подойдёт фильтрация, для регулярных — VBA или надстройки.
Метод Ручная заливка Условное форматирование Автоматизация Сложность
Фильтрация
VBA ⭐⭐⭐
Формулы массива ⭐⭐
Power Query ✅* ✅* ⭐⭐⭐
Надстройки

* Для Power Query требуется предварительно создать столбец с условием цвета.

Частые ошибки и как их избежать

Даже опытные пользователи сталкиваются с проблемами при суммировании цветных ячеек. Вот топ-3 ошибки и их решения:

  1. Функция возвращает 0:

    Проверьте, совпадает ли цвет в образце (color в VBA) с цветом ячеек. Используйте инструмент Пипетка (Главная → Цвет заливки → Пипетка) для точного подбора.

  2. #ЗНАЧ! в формулах массива:

    Убедитесь, что диапазоны в СУММПРОИЗВ одинакового размера. Например, =СУММПРОИЗВ(A1:A10; B1:B5) выдаст ошибку.

  3. Макрос не работает в файле:

    Проверьте настройки безопасности (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Надстройки) — должен быть разрешён запуск макросов.

⚠️ Внимание: Если вы копируете ячейки с цветом из другого файла, Excel может изменить код цвета (например, с RGB(255,0,0) на тематический оттенок). Всегда проверяйте цвет через Формат ячеек → Заливка.

FAQ: Ответы на популярные вопросы

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

Да. В VBA-функции замените Interior.Color на Font.Color. Для формул используйте СУММЕСЛИ с проверкой цвета через GET.CELL (требует предварительной настройки имени).

Почему после обновления Excel перестала работать моя VBA-функция?

В новых версиях Excel (начиная с 2019) изменилась модель безопасности макросов. Попробуйте:

  1. Подписать макрос цифровой подписью.
  2. Сохранить файл в формате .xlsm (с поддержкой макросов).
  3. Добавить папку с файлом в доверенные расположения (Файл → Параметры → Центр управления безопасностью → Доверенные расположения).
Как посчитать количество цветных ячеек, а не их сумму?

Используйте аналогичные методы, но с функциями подсчёта:

  • Для VBA: замените sum = sum + cl.Value на count = count + 1.
  • Для формул: =СЧЁТЕСЛИ(диапазон; ">100") (если цвет зависит от значения).
  • Для фильтрации: =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(2; диапазон) (код 2 — подсчёт).
Работает ли суммирование по цвету в Google Sheets?

В Google Таблицах нет встроенных инструментов для суммирования по цвету, но можно:

  1. Использовать Apps Script (аналог VBA).
  2. Добавить вспомогательный столбец с формулой =IF(REGEXMATCH(ADDRESS(ROW(); COLUMN()); "цвет"), 1, 0) (требует ручной настройки).
  3. Установить надстройки из Google Workspace Marketplace (например, Color Counter).
Можно ли автоматически обновлять сумму при изменении цвета ячейки?

Да, но только через VBA с событием Worksheet_Change. Добавьте этот код в модуль листа:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

Range("D1").Value = SumByColor(Range("A1:A10"), Range("C1"))

Application.EnableEvents = True

End Sub

Где D1 — ячейка с результатом, A1:A10 — суммируемый диапазон, C1 — образец цвета.