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

Цветовая маркировка в Microsoft Excel — удобный способ визуально разделять данные по категориям: красным можно выделить убытки, зелёным — прибыль, жёлтым — требующие внимания строки. Но когда дело доходит до анализа, пользователи сталкиваются с проблемой: стандартные функции СУММ() или СУММЕСЛИ() не умеют учитывать цвет ячейки. В результате приходится вручную пересчитывать сотни строк или искать обходные пути.

Эта статья закрывает вопрос раз и навсегда. Мы разберём 5 рабочих методов — от простых фильтров до автоматизации через VBA, — которые помогут посчитать сумму по цвету заливки или шрифта в любых версиях Excel (2010–2026, включая Microsoft 365). Особое внимание уделим типичным ошибкам, например, когда формулы возвращают #ЗНАЧ! или игнорируют условное форматирование. А для тех, кто не хочет копаться в коде, приведём альтернативы с использованием Power Query и надстроек.

Почему Excel не умеет суммировать по цвету «из коробки»

На первый взгляд кажется странным, что в Excel нет встроенной функции для суммирования по цвету. Причина кроется в архитектуре программы: цвет ячейки — это атрибут форматирования, а не значение. Функции же работают исключительно с данными, игнорируя визуальные параметры. Например, формула =СУММЕСЛИ(A1:A10; ">100") анализирует числа в ячейках, но не их цвет.

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

  • 🎨 Ручная заливка (выделение ячейки → «Цвет заливки» на панели инструментов).
  • 📊 Условное форматирование (правила вида «если значение > 50, закрасить в зелёный»).
  • 🖌️ Стили ячеек (например, стиль «Плохой» с красным шрифтом).

Каждый из этих методов требует своего подхода для суммирования.

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

📊 Как вы обычно маркируете данные в Excel?
Цветом заливки
Цветом шрифта
Условным форматированием
Стилями ячеек
Не маркирую

Метод 1: Фильтрация по цвету (без формул)

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

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

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

Выделить диапазон с заголовками

Включить фильтр (Ctrl+Shift+L)

Проверить, что цвет задан ручной заливкой, а не условным форматированием

Убедиться, что в столбце есть числовые данные для суммирования-->

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

Способ задания цвета Работает ли фильтр? Автообновление суммы
Ручная заливка ✅ Да ❌ Нет
Условное форматирование ❌ Нет ❌ Нет
Стили ячеек ⚠️ Частично (только если стиль применялся вручную) ❌ Нет

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

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

Инструкция:

  1. Нажмите Ctrl+F3, создайте новое имя (например, ЦветЗаливки).
  2. В поле Диапазон введите формулу:
    =GET.CELL(38;!A1)

    где 38 — код цвета заливки (для шрифта используйте 24).

  3. В ячейке, где нужно вывести цвет, напишите =ЦветЗаливки (без аргументов!).
  4. Теперь можно использовать СУММЕСЛИ с ссылкой на эту ячейку.

🔹 Пример формулы для суммирования:

=СУММПРОИЗВ(--(ЦветЗаливки=A1:A10=3); A1:A10)

где 3 — код красного цвета (узнать код можно через макрос, см. следующий раздел).

Как узнать код цвета ячейки?

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

  1. Нажмите Alt+F11, вставьте новый модуль.
  2. Добавьте код:
    Sub ShowColorCode()
    

    MsgBox "Код цвета заливки: " & ActiveCell.Interior.ColorIndex

    End Sub

  3. Выделите ячейку с нужным цветом, запустите макрос (F5).

Всплывающее окно покажет код (например, 3 для красного, 4 для зелёного).

⚠️ Внимание: Функция GET.CELL работает только в Excel для Windows и требует сохранения файла в формате .xlsm (с поддержкой макросов). В Excel Online или Mac этот метод не поддерживается.

Метод 3: VBA-скрипты для автоматического подсчёта

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

Скопируйте этот код в редактор VBA (Alt+F11ВставкаМодуль):

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

Dim cl As Range

Dim sum As Double

Dim targetColor As Long

targetColor = colorCell.Interior.Color

sum = 0

For Each cl In rng

If cl.Interior.Color = targetColor Then

sum = sum + cl.Value

End If

Next cl

SumByColor = sum

End Function

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

=SumByColor(A1:A10; C1)

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

If cl.DisplayFormat.Interior.Color = targetColor Then

Это заставит макрос проверять отображаемый цвет, а не ручную заливку.-->

⚠️ Внимание: VBA-функции перестают работать, если:

  • 🔄 Отключены макросы в настройках безопасности Excel.
  • 📁 Файл сохранён в формате .xlsx (нужен .xlsm).
  • 🖥️ Файл открыт в Excel Online или мобильной версии.

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

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

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

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

    (замените 100 и названия цветов на свои).

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

🔹 Плюсы метода:

  • ⚡ Обрабатывает миллионы строк без тормозов.
  • 🔄 Автоматически обновляется при изменении исходных данных.
  • 🎨 Работает с динамическими цветами (условное форматирование).

🔹 Минусы:

  • ⚠️ Требует предварительного описания правил цвета в формулах.
  • 📊 Не подходит для «живых» таблиц с частыми правками.

Метод 5: Надстройки от сторонних разработчиков

Если вам нужна готовая функция без программирования, обратите внимание на надстройки:

  • 📌 Ablebits (плагин Sum by Color — суммирует по заливке и шрифту, поддерживает условное форматирование).
  • 📌 Kutools for Excel (инструмент Count by Color с расширенными настройками).
  • 📌 ASAP Utilities (бесплатная версия позволяет фильтровать и суммировать по цвету).

🔹 Как выбрать надстройку:

Критерий Ablebits Kutools ASAP Utilities
Стоимость Платная (~$60) Платная (~$39) Бесплатная
Условное форматирование ✅ Да ✅ Да ❌ Нет
Автообновление ✅ Да ✅ Да ❌ Нет

⚠️ Внимание: Перед установкой надстроек проверьте их совместимость с вашей версией Excel. Некоторые плагины (например, Ablebits) требуют Microsoft 365 или Excel 2019+. Также отключите антивирус на время установки — он может блокировать макросы в надстройках.

Типичные ошибки и как их избежать

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

🔸 Ошибка #ЗНАЧ! в формулах:

  • 🔹 Причина: Функция GET.CELL или VBA не может прочитать цвет ячейки с объединёнными диапазонами.
  • 🔹 Решение: Разъедините ячейки (ГлавнаяОбъединить и поместить в центре).

🔸 Функция возвращает 0, хотя цвет есть:

  • 🔹 Причина: Цвет задан через условное форматирование, а скрипт ищет ручную заливку.
  • 🔹 Решение: Используйте DisplayFormat.Interior.Color в VBA или Power Query.

🔸 Цвета в формуле и ячейке не совпадают:

  • 🔹 Причина: В Excel один и тот же визуальный оттенок может иметь разные коды (например, RGB(255,0,0) и ColorIndex=3 — оба красные, но не равны друг другу).
  • 🔹 Решение: Проверяйте коды цветов через макрос (см. спойлер в Методе 2).

FAQ: Частые вопросы по суммированию по цвету

Можно ли суммировать по цвету в Google Таблицах?

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

  1. Используйте =SUMIF() с вспомогательным столбцом, где цвет кодируется текстом (например, "Красный", "Зелёный").
  2. Установите надстройку Color Sum из Google Workspace Marketplace.
Важно: Надстройки в Google Sheets работают медленнее, чем в Excel, из-за облачной архитектуры.

Почему моя VBA-функция не видит цвет после сохранения файла?

Скорее всего, вы сохранили файл в формате .xlsx, который не поддерживает макросы. Сохраните как .xlsm (ФайлСохранить как → выберите тип Книга Excel с поддержкой макросов (*.xlsm)).

Если проблема осталась, проверьте настройки безопасности:

  1. Перейдите в ФайлПараметрыЦентр управления безопасностьюПараметры центра....
  2. Выберите Настройки макросовВключить все макросы (не рекомендуется для файлов из ненадёжных источников!).

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

Для цвета шрифта используйте следующие модификации методов:

  • 📌 В Методе 2 (GET.CELL) замените 38 на 24 (код цвета шрифта).
  • 📌 В Методе 3 (VBA) замените Interior.Color на Font.Color.
  • 📌 В Методе 4 (Power Query) добавьте столбец с проверкой = if Text.Color([@ВашСтолбец]) = "FF0000" then "Красный" else "Другой".

Можно ли суммировать по цвету в Excel Online?

В Excel Online доступны только два метода:

  1. Фильтрация по цвету (см. Метод 1), но без автоматического подсчёта итогов.
  2. Условное форматирование + вспомогательный столбец: создайте правило, которое будет прописывать в соседнем столбце название цвета (например, "Красный"), а затем используйте СУММЕСЛИ.

⚠️ VBA, Power Query и надстройки в Excel Online не работают.

Как суммировать по нескольким цветам одновременно?

Используйте массив условий в VBA или Power Query:

  • 📌 В VBA модифицируйте функцию SumByColor, добавив массив цветов:
    Function SumByColors(rng As Range, colorCells As Range) As Double
    

    Dim cl As Range, c As Range

    Dim sum As Double

    Dim colors() As Long

    ReDim colors(1 To colorCells.Count)

    For i = 1 To colorCells.Count

    colors(i) = colorCells(i).Interior.Color

    Next i

    sum = 0

    For Each cl In rng

    For i = 1 To UBound(colors)

    If cl.Interior.Color = colors(i) Then

    sum = sum + cl.Value

    Exit For

    End If

    Next i

    Next cl

    SumByColors = sum

    End Function

    Вызывайте её так: =SumByColors(A1:A10; C1:D1), где C1:D1 — ячейки с образцами цветов.

  • 📌 В Power Query сгруппируйте данные по нескольким значениям столбца с цветами.