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

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

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

Проблема усложняется тем, что Microsoft до сих пор не добавила встроенную функцию для работы с цветами (в отличие от Google Таблиц, где есть GET.CELL в пользовательских функциях). Однако обходные пути существуют — от ручных методов до автоматизации через VBA. В этой статье разберём все актуальные способы, включая те, что работают в Excel 365 и Excel 2019 без установки надстроек.

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

📊 Какой версией Excel вы пользуетесь чаще?
Excel 2010–2016
Excel 2019–2021
Excel 365 (онлайн/десктоп)
Google Таблицы
Другая

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

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

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

⚠️ Ограничения метода:

  • 🔴 Работает только для ручного фильтра — если данные изменятся, фильтр сбросится.
  • 🔴 Не подходит для условного форматирования (цвета, назначенные по правилам).
  • 🔴 Нельзя автоматизировать — приходится повторять действия каждый раз.

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

Применить фильтр (Ctrl+Shift+L)

Убедиться, что цвет ячеек назначен вручную (не условным форматированием)

Отключить объединённые ячейки (они могут сломать фильтр)

-->

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

Метод 2: Функция GET.CELL (только для Excel для Windows)

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

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

    где 38 — код параметра для цвета фона.

  4. Нажмите ОК и закройте диспетчер.
  5. Теперь в любой ячейке можно использовать формулу:
    =СУММПРОИЗВ(--(ЦветЯчейки=A1:A10=6); A1:A10)

    где 6 — код цвета (например, жёлтый в стандартной палитре).

⚠️ Внимание: Коды цветов в GET.CELL не соответствуют RGB. Чтобы узнать код нужного цвета, выделите ячейку и используйте формулу =ЦветЯчейки — она вернёт числовое значение.

ЦветКод в GET.CELLПример формулы
Красный (стандартный)3=СУММПРОИЗВ(--(ЦветЯчейки=A1:A10=3); A1:A10)
Зелёный (стандартный)4=СУММПРОИЗВ(--(ЦветЯчейки=A1:A10=4); A1:A10)
Жёлтый (стандартный)6=СУММПРОИЗВ(--(ЦветЯчейки=A1:A10=6); A1:A10)
Синий (условное форматирование)12=СУММПРОИЗВ(--(ЦветЯчейки=A1:A10=12); A1:A10)

Этот метод не работает в Excel для Mac и Excel Online. Для кросс-платформенных решений читайте дальше.

Метод 3: VBA-функция для суммы цветных ячеек

Если вы готовы использовать макросы, VBA предоставляет самый гибкий способ. Ниже приведён код пользовательской функции СУММЦВЕТ, которая суммирует ячейки заданного цвета:

Function СУММЦВЕТ(рнг As Range, цв As Range) As Double

Dim cl As Range

Dim сумма As Double

сумма = 0

For Each cl In рнг

If cl.Interior.Color = цв.Interior.Color Then

сумма = сумма + cl.Value

End If

Next cl

СУММЦВЕТ = сумма

End Function

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (меню InsertModule).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
  4. Теперь в Excel можно использовать формулу:
    =СУММЦВЕТ(A1:A10; B1)

    где B1 — ячейка с образцом цвета.

⚠️ Внимание: Функция чувствительна к точному совпадению цвета. Если ячейки закрашены условным форматированием или оттенками RGB, используйте модифицированную версию кода с учетом ColorIndex:

Function СУММЦВЕТ_IND(рнг As Range, цв As Range) As Double

Dim cl As Range

Dim сумма As Double

сумма = 0

For Each cl In рнг

If cl.Interior.ColorIndex = цв.Interior.ColorIndex Then

сумма = сумма + cl.Value

End If

Next cl

СУММЦВЕТ_IND = сумма

End Function

Как обойти ограничение на цвет в условном форматировании?

Если цвет ячейки назначен через условное форматирование, стандартная VBA-функция его не увидит. В этом случае нужно использовать свойство .DisplayFormat.Interior.Color вместо .Interior.Color. Пример модифицированного кода:

Function СУММЦВЕТ_DISP(рнг As Range, цв As Range) As Double

Dim cl As Range

Dim сумма As Double

сумма = 0

For Each cl In рнг

If cl.DisplayFormat.Interior.Color = цв.DisplayFormat.Interior.Color Then

сумма = сумма + cl.Value

End If

Next cl

СУММЦВЕТ_DISP = сумма

End Function

Метод 4: Power Query для динамических таблиц

Если вы работаете с Power Query (доступен в Excel 2016+), можно автоматизировать суммирование цветных ячеек через столбец с индексами цветов. Алгоритм:

  1. Выделите диапазон и преобразуйте его в таблицу (Ctrl+T).
  2. Перейдите на вкладку ДанныеИз таблицы/диапазона (откроется Power Query).
  3. Добавьте пользовательский столбец с формулой:
    = Table.AddColumn(#"Предыдущий шаг", "Цвет", each if [@ВашСтолбец] = null then null else if Value.Is(Value.FromText([@ВашСтолбец]), type number) then Excel.CurrentWorkbook(){[Name="ЦветЯчейки"]}[Content]{[Column1=[@ВашСтолбец]]} else null)

    (замените ВашСтолбец на имя столбца с числами).

  4. Отфильтруйте новый столбец по нужному коду цвета и суммируйте значения.

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

Метод 5: Google Таблицы (функция GET.CELL)

В Google Таблицах задача решается проще благодаря встроенной функции GET.CELL, которая доступна в пользовательских функциях. Вот пошаговая инструкция:

  1. Откройте РасширенияApps Script.
  2. Вставьте код:
    function СУММЦВЕТ(диапазон, образец) {
    

    var сумма = 0;

    var цвОбразца = SpreadsheetApp.getActiveSpreadsheet().getRange(образец).getBackground();

    for (var i = 0; i < диапазон.length; i++) {

    for (var j = 0; j < диапазон[i].length; j++) {

    var цвЯчейки = SpreadsheetApp.getActiveSpreadsheet().getRange(диапазон[i][j].getA1Notation()).getBackground();

    if (цвЯчейки === цвОбразца) {

    сумма += диапазон[i][j].getValue();

    }

    }

    }

    return сумма;

    }

  3. Сохраните проект и закройте редактор.
  4. В таблице используйте формулу:
    =СУММЦВЕТ(A1:A10; B1)

    где B1 — ячейка с образцом цвета.

⚠️ Внимание: В Google Таблицах цвета хранятся в формате #RRGGBB, поэтому функция чувствительна к малейшим различиям в оттенках. Если вы копировали цвет через Формат по образцу, проблем не будет. Если же цвета назначены вручную, используйте точные HEX-коды.

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

Выбор способа зависит от ваших задач и версии Excel. Ниже таблица с сравнением:

МетодСложностьДинамичностьРаботает в Mac/OnlineПоддерживает условное форматирование
Фильтрация❌ (ручной пересчёт)
GET.CELL (именованная)⭐⭐❌ (только Windows)
VBA⭐⭐⭐❌ (только десктоп)✅ (с модификацией)
Power Query⭐⭐⭐⭐
Google Apps Script⭐⭐✅ (только Google Таблицы)

Для разовых расчётов подойдёт фильтрация. Если нужна автоматизация в десктопной версии — используйте VBA. Для Excel Online или Mac единственный надёжный вариант — Power Query (несмотря на сложность настройки).

FAQ: Частые вопросы

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

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

Function СУММЦВЕТТЕКСТ(рнг As Range, цв As Range) As Double

Dim cl As Range

Dim сумма As Double

сумма = 0

For Each cl In рнг

If cl.Font.Color = цв.Font.Color Then

сумма = сумма + cl.Value

End If

Next cl

СУММЦВЕТТЕКСТ = сумма

End Function

В Google Таблицах используйте .getFontColor() вместо .getBackground().

Почему VBA-функция возвращает 0 для условного форматирования?

Потому что .Interior.Color считывает реальный цвет ячейки, а не тот, что отображается через условное форматирование. Используйте .DisplayFormat.Interior.Color (см. спойлер в разделе про VBA).

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

Создайте именованную формулу ЦветЯчейки (как в Методе 2), затем в любой ячейке введите =ЦветЯчейки и выделите ячейку нужного цвета. Функция вернёт числовой код.

Для Excel 365 можно использовать FORMAT:

=FORMAT(GET.CELL(38,!A1),"0")

Есть ли надстройки для суммирования цветных ячеек?

Да, например:

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

⚠️ Внимание: Надстройки могут конфликтовать с макросами и замедлять работу больших файлов.

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

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