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

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

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

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

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

📊 Как часто вы используете цветовое форматирование в Excel?
Постоянно, это часть моей работы
Иногда, для наглядности
Рядом, но не для расчётов
Никогда

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

Если вам нужно однократно посчитать сумму ячеек определённого цвета, не погружаясь в программирование, воспользуйтесь встроенной фильтрацией. Этот метод работает в Excel 2010 и новее, включая Excel 365.

Алгоритм:

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

Плюсы: не требует знаний формул или VBA, работает «из коробки».

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

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

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

Выбрать столбец с цветными ячейками

Применить фильтр по цвету заполнения/текста

Посмотреть сумму в строке состояния-->

⚠️ Внимание: Если в вашей таблице условное форматирование (цвет меняется по правилу, а не вручную), фильтр по цвету работать не будет. В этом случае переходите к способам 3–5.

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

Этот метод подходит, если цвета ячеек задаются вручную (не условным форматированием) и их количество ограничено (например, 2–3 цвета). Суть: создаём вспомогательный столбец, где присваиваем каждому цвету уникальный код, а затем суммируем по этому коду.

Пример для зелёных и красных ячеек:

  1. Добавьте справа от данных новый столбец (назовите его «Цветовой код»).
  2. Для каждой ячейки с данными введите формулу:
    =ЕСЛИ(ЯЧЕЙКА("цвет";A1)=3;1;ЕСЛИ(ЯЧЕЙКА("цвет";A1)=5;2;0))

    где 3 и 5 — внутренние коды цветов (узнать их можно через =ЯЧЕЙКА("цвет";A1)).

  3. Теперь используйте СУММЕСЛИ для суммирования по коду:
    =СУММЕСЛИ(B2:B100;1;A2:A100)

    где 1 — код зелёного цвета.

🔹 Как узнать код цвета? Введите в любой ячейке =ЯЧЕЙКА("цвет";A1) и скопируйте возвращённое число. Для условного форматирования этот метод не работает — функция ЯЧЕЙКА вернёт 0.

Цвет заполненияКод в ExcelПример формулы
Красный3=ЕСЛИ(ЯЧЕЙКА("цвет";A1)=3;1;0)
Зелёный4=ЕСЛИ(ЯЧЕЙКА("цвет";A1)=4;1;0)
Жёлтый6=ЕСЛИ(ЯЧЕЙКА("цвет";A1)=6;1;0)
Синий5=ЕСЛИ(ЯЧЕЙКА("цвет";A1)=5;1;0)
⚠️ Внимание: Коды цветов могут отличаться в разных версиях Excel! Всегда проверяйте их заранее. Если после изменения цвета ячейки код не обновляется, пересохраните файл.

Способ 3: Надстройка «Sum by Color» (для новичков)

Если вам нужна автоматическая сумма по цветам без формул и VBA, установите бесплатную надстройку Sum by Color (работает в Excel 2013–2021 и Excel 365). Она добавляет специальную функцию, которая видит цвета ячеек.

Инструкция:

  1. Скачайте надстройку с официального сайта Ablebits (раздел Sum by Color).
  2. Установите файл .xlsm и разрешите макросы при открытии.
  3. Выделите диапазон с данными и нажмите на новой вкладке Ablebits → Sum by Color.
  4. Выберите цвет в легенде — программа покажет сумму и количество ячеек.

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

Минусы: требует установки стороннего ПО; в бесплатной версии ограничение на 500 ячеек.

Как удалить надстройку, если она не понадобилась?

Перейдите в Файл → Параметры → Надстройки → Управление надстройками Excel (перейти). Снимите галочку с Sum by Color и нажмите ОК.

Способ 4: VBA-функция для суммы по цвету заполнения

Это самый мощный и универсальный метод, который работает даже с условным форматированием. Мы создадим пользовательскую функцию SumByColor, которую можно будет использовать как обычную формулу.

Шаги:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert → Module.
  3. Вставьте следующий код:
    Function SumByColor(rData As Range, rColorCell As Range) As Double
    

    Dim cl As Range

    Dim lColor As Long

    lColor = rColorCell.Interior.Color

    For Each cl In rData

    If cl.Interior.Color = lColor Then

    SumByColor = SumByColor + cl.Value

    End If

    Next cl

    End Function

  4. Закройте редактор и вернитесь в Excel.
  5. Теперь используйте функцию в любой ячейке:
    =SumByColor(A1:A100;C1)

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

🔹 Как работает: Функция сравнивает цвет каждой ячейки в диапазоне с цветом образца (C1) и суммирует только совпадающие. Поддерживает любые цвета, включая градиенты (но только если они заданы вручную).

⚠️ Внимание: Если вы копируете ячейку с формулой SumByColor в другой файл, макрос перестанет работать. Чтобы перенести функцию, экспортируйте модуль VBA: в редакторе нажмите File → Export File и сохраните как .bas, затем импортируйте в новый файл.

Способ 5: Power Query для динамических таблиц

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

Алгоритм:

  1. Выделите таблицу и перейдите на вкладку Данные → Из таблицы/диапазона (или Get & Transform → From Table/Range).
  2. В открывшемся окне Power Query добавьте пользовательский столбец с формулой:
    = if [Column1] = null then null else if Value.Is(Value.FromText([Column1]), type number) then [Column1] else 0

    (замените Column1 на имя вашего столбца).

  3. Добавьте ещё один столбец для кода цвета:
    = Value.FromText(Text.From([Column1]?[BackgroundColor] ?? 0))
  4. Сгруппируйте данные по коду цвета (Group By) и выберите операцию Sum.
  5. Загрузите результат обратно в Excel.

⚠️ Этот метод требует знания M-языка (языка Power Query) и подходит только для опытных пользователей. Для простых задач лучше использовать VBA или надстройки.

Почему Power Query не видит цвета ячеек напрямую?

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

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

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

  • 🔴 Ошибка #1: Использование СУММЕСЛИ с критерием цвета. Решение: СУММЕСЛИ не работает с цветами — используйте SumByColor (VBA) или фильтрацию.
  • 🟡 Ошибка #2: Коды цветов меняются при копировании ячеек. Решение: Фиксируйте цвета через Условное форматирование → Управление правилами.
  • 🟢 Ошибка #3: VBA-функция возвращает #VALUE!. Решение: Проверьте, включены ли макросы (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы).
  • 🔵 Ошибка #4: Фильтр по цвету не показывает все ячейки. Решение: Убедитесь, что цвета заданы вручную, а не через условное форматирование.

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

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

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

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

Function SumByFontColor(rData As Range, rColorCell As Range) As Double

Dim cl As Range

Dim lColor As Long

lColor = rColorCell.Font.Color

For Each cl In rData

If cl.Font.Color = lColor Then

SumByFontColor = SumByFontColor + cl.Value

End If

Next cl

End Function

Для фильтрации выбирайте Фильтр по цвету → Цвет текста.

Почему функция ЯЧЕЙКА("цвет";A1) возвращает 0 для цветных ячеек?

Это означает, что цвет задан через условное форматирование, а не вручную. Функция ЯЧЕЙКА не видит динамические цвета. Решения:

  • Используйте VBA (способ 4).
  • Преобразуйте условное форматирование в ручное: скопируйте ячейки, вставьте как Значения и формат в новый диапазон.
Как суммировать ячейки по цвету в Google Таблицах?

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

  1. Скрипт Apps Script (аналог VBA). Пример кода:
    function sumByColor(range, colorCell) {
    

    var sheet = SpreadsheetApp.getActiveSheet();

    var color = colorCell.getBackground();

    var sum = 0;

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

    if (range[i].getBackground() == color) {

    sum += range[i].getValue();

    }

    }

    return sum;

    }

  2. Надстройку «Color Sum» из магазина Google Workspace Marketplace.
Можно ли суммировать ячейки по цвету в Excel Online?

Нет. Excel Online не поддерживает:

  • Макросы (VBA),
  • Надстройки (Ablebits и аналоги),
  • Функцию ЯЧЕЙКА("цвет";...).

Единственный выход — использовать фильтрацию по цвету (способ 1) или перенести файл в десктопную версию Excel.

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

Если вы используете:

  • VBA-функцию — сумма будет обновляться при пересчёте листа (F9).
  • Фильтрацию — придётся применять фильтр заново.
  • Надстройку — проверьте настройки автообновления (в Ablebits это включается в параметрах надстройки).

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