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

Почему стандартные функции Excel не видят цвет ячеек — и что с этим делать

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

В этой статье мы разберём 5 рабочих способов суммировать окрашенные ячейки: от простых обходных путей с фильтрами до автоматизации через VBA и специализированных надстроек. Вы узнаете, какой метод подходит для одноразовых задач, а какой стоит использовать для регулярных отчётов. И да — все решения работают в Excel 2010–2023 и Office 365 (включая веб-версию с ограничениями).

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

📊 Как вы обычно окрашиваете ячейки в Excel?
Вручную через меню "Заливка"
Через условное форматирование
С помощью VBA-макросов
Использую готовые шаблоны

Способ 1: Фильтр по цвету + стандартная функция СУММ (для ручного форматирования)

Если вы вручную закрасили ячейки с помощью инструмента «Заливка» (Главная → Шрифт → Цвет заливки), самый простой способ — отфильтровать их и применить СУММ() к видимому диапазону. Это не требует знания формул или макросов, но работает только для статического окрашивания.

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

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

Пример формулы для суммирования видимых ячеек в столбце A2:A100:

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9; A2:A100)

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

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

Выбрать цвет в меню фильтра

Добавить формулу ПРОМЕЖУТОЧНЫЕ.ИТОГИ()

-->

⚠️ Внимание: Этот метод не работает, если цвет ячеек задаётся через условное форматирование — фильтр «не видит» динамическую заливку. Для таких случаев читайте Способ 4 (VBA).

Способ 2: Функция ПОИСКПОЗ + вспомогательный столбец (для условного форматирования)

Когда цвет ячейки зависит от её значения (например, через правила Условное форматирование → Правила выделения ячеек), фильтр бесполезен. Но можно обойти ограничение, создав вспомогательный столбец, который будет отмечать окрашенные ячейки.

Допустим, у вас в столбце B числа, которые окрашиваются в красный, если значение < 0. Добавим в столбец C формулу, проверяющую условие окрашивания:

=ЕСЛИ(B2<0; 1; 0)

Затем используем СУММПРОИЗВ(), чтобы перемножить исходные значения на метки:

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

Этот метод универсален, но требует:

  • 🔹 Точного повторения логики условного форматирования во вспомогательном столбце.
  • 🔹 Дополнительного места в таблице (что не всегда удобно).
  • 🔹 Обновления формул при изменении правил окрашивания.
МетодПодходит дляТребует VBAРаботает в Excel Online
Фильтр + ПРОМЕЖУТОЧНЫЕ.ИТОГИРучная заливкаНетДа
Вспомогательный столбецУсловное форматированиеНетДа
Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (XLM)Любой цветНет*Нет
VBA (User Defined Function)Любой цветДаНет
Надстройка (например, Ablebits)Любой цветНетЧастично

* Функция ПОЛУЧИТЬ.ЯЧЕЙКУ относится к XLM-макросам (устаревшая технология) и по умолчанию отключена в современных версиях Excel. Её включение требует изменений в настройках безопасности.

Способ 3: Пользовательская функция на VBA (универсальный метод)

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

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

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

Dim cl As Range

Dim sum As Double

Dim targetColor As Long

targetColor = color.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

Теперь в Excel можно использовать формулу:

=SumByColor(A1:A100; D1)

где D1 — ячейка с образцом цвета, который нужно суммировать.

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

Откройте Immediate Window в редакторе VBA (Ctrl + G), выделите ячейку с нужным цветом и введите команду:

? ActiveCell.Interior.Color

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

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

  • 🔹 Работает с любым типом окрашивания (ручным или условным).
  • 🔹 Формулу можно копировать как обычную.
  • 🔹 Поддерживает динамические диапазоны (например, A1:A & СЧЁТЗ(A:A)).
⚠️ Внимание: В Excel Online и мобильных версиях VBA не поддерживается. Также макросы по умолчанию отключены в файлах, полученных из ненадёжных источников (проверьте Файл → Параметры → Центр управления безопасностью).

Способ 4: Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (для опытных пользователей)

В старых версиях Excel существовала функция ПОЛУЧИТЬ.ЯЧЕЙКУ (GET.CELL), которая могла возвращать информацию о форматировании, включая цвет. Хотя она официально не документирована, её до сих пор можно использовать через имена диапазонов.

Инструкция:

  1. Нажмите Формулы → Диспетчер имён → Создать.
  2. В поле «Имя» введите ColorIndex.
  3. В поле «Формула» введите:
    =ПОЛУЧИТЬ.ЯЧЕЙКУ(38;!A1)

    (где 38 — код для индекса цвета, !A1 — относительная ссылка).

  4. Теперь в любой ячейке можно использовать =ColorIndex, и она вернёт индекс цвета текущей ячейки.

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

=СУММПРОИЗВ(--(ColorIndex=3); A1:A100)

Критическая особенность: функция ПОЛУЧИТЬ.ЯЧЕЙКУ работает только в англоязычной версии Excel под Windows. В русскоязычных версиях или на Mac она вернёт ошибку #ИМЯ?.

Способ 5: Надстройки от сторонних разработчиков (для новичков)

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

  • 🔹 Ablebits Ultimate Suite — плагин с функцией =SumByColor() и визуальным мастером.
  • 🔹 Kutools for Excel — включает инструмент «Sum by Color» с поддержкой условного форматирования.
  • 🔹 ASAP Utilities — бесплатная надстройка с опцией «Sum cells by color».

Пример работы с Ablebits:

  1. Установите надстройку и перезапустите Excel.
  2. Выделите диапазон с данными.
  3. На вкладке Ablebits Data выберите Sum by Color.
  4. Укажите цвет (кликнув на окрашенную ячейку) и диапазон для вывода результата.

Плюсы надстроек:

  • 🔹 Интуитивный интерфейс (не нужно писать код).
  • 🔹 Поддержка условного форматирования и динамических диапазонов.
  • 🔹 Возможность суммировать по нескольким цветам одновременно.

Минусы:

  • 🔸 Плагины могут замедлять работу Excel при больших объёмах данных.
  • 🔸 В веб-версии Excel (Online) большинство надстроек не работает.

Сравнение методов: какой выбрать для вашей задачи

Чтобы не тратить время на эксперименты, воспользуйтесь этой таблицей:

КритерийФильтр + ПРОМЕЖУТОЧНЫЕ.ИТОГИВспомогательный столбецVBA (UDF)Надстройки
Тип окрашиванияТолько ручноеУсловное форматированиеЛюбойЛюбой
Требуются ли навыки программированияНетНетДа (базовые)Нет
Работает в Excel OnlineДаДаНетЧастично
Автоматическое обновление при изменении данныхДа (при пересчёте)ДаДаДа
Поддержка динамических диапазоновНетДаДаДа

Рекомендации по выбору:

  • 🔹 Одноразовая задача с ручной заливкой? → Используйте Фильтр + ПРОМЕЖУТОЧНЫЕ.ИТОГИ.
  • 🔹 Условное форматирование с простыми правилами?Вспомогательный столбец + СУММПРОИЗВ.
  • 🔹 Нужно решение для регулярных отчётов?VBA или надстройки.
  • 🔹 Работаете в Excel Online? → Только первые два способа.

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

Даже с правильно выбранным методом можно столкнуться с проблемами. Вот топ-5 ошибок и их решения:

  1. Формула возвращает 0, хотя есть окрашенные ячейки.

    Причина: цвет ячеек задаётся условным форматированием, а вы используете метод для ручной заливки (например, фильтр). Решение: перейдите к Способу 3 (VBA).

  2. VBA-функция не обновляет результат.

    Причина: в настройках Excel отключен автоматический пересчёт формул. Решение: перейдите в Формулы → Параметры вычислений → Автоматически.

  3. Функция ПОЛУЧИТЬ.ЯЧЕЙКУ возвращает #ИМЯ?.

    Причина: вы используете русскоязычную версию Excel. Решение: переключитесь на английскую локаль или используйте VBA.

  4. Надстройка не видет цвет ячеек.

    Причина: цвет применён через Условное форматирование → Правила отбора первых/последних значений. Решение: замените правило на формулу (например, =A1>СРЗНАЧ($A$1:$A$100)).

  5. Сумма неверная при динамических диапазонах.

    Причина: формула не учитывает добавление/удаление строк. Решение: используйте Таблицы Excel (Ctrl+T) или именованные диапазоны с функцией СМЕЩ().

⚠️ Внимание: Если вы делитесь файлом с коллегами, убедитесь, что они тоже включили макросы (для VBA-решений) или установили ту же надстройку. В противном случае формулы перестанут работать.

FAQ: Ответы на частые вопросы

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

Да, но только через VBA. Измените в коде функцию SumByColor строку cl.Interior.Color на cl.Font.Color. Для надстроек (например, Ablebits) выберите опцию «Sum by font color».

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

Скорее всего, цвет ячеек задаётся градиентной заливкой или условным форматированием с формулой, где оттенок зависит от значения. В этом случае Interior.Color вернёт не тот код. Используйте cl.DisplayFormat.Interior.Color вместо cl.Interior.Color — это учитывает финальное отображаемое форматирование.

Как суммировать ячейки с полупрозрачной заливкой?

Полупрозрачные цвета (например, через Формат ячеек → Заливка → Эффекты заливки) не имеют фиксированного кода цвета. Решение: замените полупрозрачность на сплошной цвет или используйте надстройку Kutools, которая распознаёт такие случаи.

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

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

function sumByColor() {

var sheet = SpreadsheetApp.getActiveSheet();

var range = sheet.getDataRange();

var colors = range.getBackgrounds();

var values = range.getValues();

var sum = 0;

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

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

for (var j = 0; j < colors[i].length; j++) {

if (colors[i][j] === targetColor) {

sum += values[i][j];

}

}

}

Logger.log(sum);

}

Чтобы запустить, откройте Расширения → Apps Script, вставьте код и нажмите «Выполнить». Результат появится в логах (Просмотр → Логи).

Как экспортировать сумму цветных ячеек в Power Query?

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

  1. Добавьте в исходную таблицу вспомогательный столбец со значениями цвета (как в Способе 3).
  2. Загрузите данные в Power Query (Данные → Из таблицы/диапазона).
  3. Отфильтруйте строки по столбцу с цветом и просуммируйте нужный столбец.