Суммирование по цвету в Excel: от простых фильтров до VBA-макросов

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

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

Проблема усложняется, если цвет ячеек задан через условное форматирование. В этом случае цвет динамически меняется в зависимости от значений, но для формул он остаётся "невидимым". Например, если у вас правило "окрасить в зелёный ячейки с продажами >1000", то Excel не хранит информацию о том, что ячейка физически стала зелёной в 14:32 15.05.2026 — он просто пересчитывает условие при каждом открытии файла.

К счастью, есть обходные пути. Их выбор зависит от вашей версии Excel (2010, 2016, 365 или Excel Online), наличия прав на редактирование макросов и даже от того, как именно был применён цвет — вручную или через условное форматирование. Далее разберём все рабочие методы, от самых простых до профессиональных.

📊 Какой у вас Excel?
Excel 2010-2013
Excel 2016-2019
Excel 365 (подписка)
Excel Online
Другой

Метод 1: Фильтрация по цвету + ручное суммирование

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

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

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

Если строка итогов не отображается, включите её через ДанныеИтоги (или нажмите Alt+Shift+T). Этот метод идеален для разовых задач, но имеет ограничения:

  • 🔴 Не работает с цветами, применёнными через условное форматирование.
  • 🔴 Требует ручного повторения фильтрации при изменении данных.
  • 🟢 Подходит для быстрого анализа без формул.

Метод 2: Функция GET.CELL (только для цветов, применённых вручную)

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

Инструкция:

  1. Нажмите Ctrl+F3, чтобы открыть Диспетчер имён.
  2. Создайте новое имя (например, ЦветЯчейки) со следующей формулой:
    =GET.CELL(38,!A1)

    где 38 — это код для цвета фона ячейки.

  3. В ячейке, где хотите получить сумму, введите формулу массива (завершите ввод Ctrl+Shift+Enter):
    =СУММПРОИЗВ(--(ЦветЯчейки=3);A1:A100)

    где 3 — это номер цвета в палитре Excel (для красного обычно 3, зелёного — 4, жёлтого — 6).

Чтобы узнать номер цвета конкретной ячейки, выделите её и используйте формулу =ЦветЯчейки (она вернёт число). Этот метод сложнее предыдущего, но позволяет автоматизировать суммирование без VBA.

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

В Excel используется индексация цветов от 0 до 56. Стандартные цвета:

- 0: Чёрный (по умолчанию для текста)

- 1: Белый (фон)

- 3: Красный

- 4: Зелёный

- 5: Синий

- 6: Жёлтый

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

Метод 3: VBA-макрос для суммирования по любому цвету

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

Скопируйте следующий код в редактор VBA (Alt+F11):

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

Dim cl As Range

Dim sum As Double

sum = 0

For Each cl In rng

If cl.Interior.Color = colorCell.Interior.Color Then

sum = sum + cl.Value

End If

Next cl

SumByColor = sum

End Function

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

  1. Выделите ячейку, где хотите получить сумму.
  2. Введите формулу =SumByColor(A1:A100;B1), где:
    • A1:A100 — диапазон для суммирования,
    • B1 — ячейка с образцом цвета.
  • Нажмите Enter — функция вернёт сумму всех ячеек в диапазоне, которые имеют такой же цвет фона, как в B1.
  • Для суммирования по цвету шрифта замените Interior.Color на Font.Color в коде.

    🔹 Включите макросы в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы)

    🔹 Сохраните файл как .xlsm (с поддержкой макросов)

    🔹 Проверьте, что в ячейке-образце (B1) цвет применён вручную, а не через условное форматирование

    🔹 Для условного форматирования используйте модифицированный код (см. следующий раздел)

    -->

    Метод 4: Суммирование по цветам условного форматирования

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

    Function SumByConditionalFormat(rng As Range) As Double
    

    Dim cell As Range

    Dim sum As Double

    Dim formatCondition As FormatCondition

    Dim color As Long

    ' Укажите здесь цвет, по которому нужно суммировать (например, RGB зелёного)

    color = RGB(0, 255, 0) ' Зелёный

    sum = 0

    For Each cell In rng

    For Each formatCondition In cell.FormatConditions

    If formatCondition.Interior.Color = color Then

    sum = sum + cell.Value

    Exit For

    End If

    Next formatCondition

    Next cell

    SumByConditionalFormat = sum

    End Function

    Особенности этого метода:

    • 🔴 Работает медленнее, чем стандартные функции (проверяет каждую ячейку на наличие правил).
    • 🟢 Поддерживает динамические цвета из условного форматирования.
    • 🔴 Требует ручной правки кода для указания нужного цвета (в примере — зелёный RGB(0, 255, 0)).

    Чтобы узнать RGB-код цвета из условного форматирования:

    1. Выделите ячейку с нужным цветом.
    2. Запустите запись макроса (Вид → Макросы → Записать макрос).
    3. Вручную измените цвет фона ячейки на такой же (через Главная → Цвет заливки).
    4. Остановите запись макроса и посмотрите в коде строку с .Interior.Color = RGB(...).

    Метод 5: Power Query для продвинутых пользователей

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

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

    1. Выделите ваш диапазон данных и перейдите на вкладку ДанныеИз таблицы/диапазона (или Get & Transform Data в английской версии).
    2. В открывшемся редакторе Power Query добавьте пользовательский столбец с формулой:
      = Table.AddColumn(#"Previous Step", "BackgroundColor", each [YourColumnName][BackgroundColor])

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

    3. Отфильтруйте новый столбец по нужному цвету (в формате шестнадцатеричного кода, например, #FF0000 для красного).
    4. Сгруппируйте данные по цвету и рассчитайте сумму.
    5. Загрузите результат обратно в Excel.

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

    • 🟢 Обрабатывает большие объёмы данных (миллионы строк).
    • 🟢 Сохраняет шаги преобразования для повторного использования.
    • 🔴 Требует изучения синтаксиса M-языка.

    Для условного форматирования в Power Query придётся вручную дублировать логику правил (например, добавить столбец с условием = if [Sales] > 1000 then "Green" else "Red").

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

    Выбор способа суммирования по цвету зависит от вашей задачи. В таблице ниже — сравнение всех методов по ключевым параметрам:

    Метод Работает с условным форматированием Требует VBA Автоматизация Скорость Сложность
    Фильтрация + ручная сумма ❌ Нет ❌ Нет ❌ Нет ⚡ Быстро ⭐ Очень просто
    Функция GET.CELL ❌ Нет ❌ Нет ✅ Да ⚡ Быстро ⭐⭐ Средне
    VBA (статический цвет) ❌ Нет ✅ Да ✅ Да ⚡⚡ Средне ⭐⭐⭐ Сложно
    VBA (условное форматирование) ✅ Да ✅ Да ✅ Да 🐢 Медленно ⭐⭐⭐⭐ Очень сложно
    Power Query ✅ Да (с ручной логикой) ❌ Нет ✅ Да ⚡⚡ Средне ⭐⭐⭐⭐⭐ Эксперт

    Для большинства пользователей оптимальным решением будет комбинация фильтрации и VBA: фильтр для разовых задач, макрос — для регулярных отчётов. Если вы работаете с условным форматированием и не боитесь кода, изучите Power Query — это инвестиция в долгосрочную автоматизацию.

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

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

    ⚠️ Внимание: Если ваша функция GET.CELL возвращает #Н/Д, убедитесь, что имя диапазона (ЦветЯчейки) создано правильно и ссылается на ту же книгу. Имена, определённые в одной книге, не видны в другой!
    • 🔴 Ошибка #ЗНАЧ! в VBA-функции:
      Причина: неверно указан диапазон или ячейка-образец. Проверьте, что в SumByColor переданы корректные ссылки, а цвет в ячейке-образце применён вручную.
    • 🔴 Функция возвращает 0, хотя цветные ячейки есть:
      Причина: цвет в ячейках задан через условное форматирование, а вы используете метод для статического цвета. Переключитесь на VBA для условного форматирования.
    • 🔴 Макрос не работает в Excel Online:
      Причина: Excel Online не поддерживает VBA. Используйте фильтрацию или Power Query (если доступен).
    • 🔴 Цвета в формуле и ячейке выглядят одинаково, но сумма не считается:
      Причина: визуально одинаковые цвета могут иметь разные RGB-коды. Используйте инструмент "Пипетка" в Excel (Главная → Цвет заливки → Пипетка) для точного совпадения.
    ⚠️ Внимание: При копировании диапазонов с цветами из одного файла в другой RGB-коды цветов могут измениться! Это происходит из-за разных цветовых тем в книгах. Чтобы избежать ошибок, всегда проверяйте код цвета в целевом файле.

    Часто задаваемые вопросы

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

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

    function sumByColor() {
    

    const sheet = SpreadsheetApp.getActiveSheet();

    const range = sheet.getDataRange();

    const values = range.getValues();

    const colors = range.getBackgrounds();

    let sum = 0;

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

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

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

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

    sum += values[i][j];

    }

    }

    }

    Logger.log(sum); // Выведет сумму в журнал

    }

    Чтобы запустить скрипт, перейдите в Расширения → Apps Script, вставьте код и нажмите Выполнить.

    Почему моя функция SumByColor работает только для чисел, а текстовые ячейки игнорирует?

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

    Function CountByColor(rng As Range, colorCell As Range) As Long
    

    Dim cl As Range

    Dim count As Long

    count = 0

    For Each cl In rng

    If cl.Interior.Color = colorCell.Interior.Color Then

    count = count + 1

    End If

    Next cl

    CountByColor = count

    End Function

    Используйте её как =CountByColor(A1:A100;B1).

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

    Замените в VBA-коде Interior.Color на Font.Color. Например:

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

    Dim cl As Range

    Dim sum As Double

    sum = 0

    For Each cl In rng

    If cl.Font.Color = colorCell.Font.Color Then

    sum = sum + cl.Value

    End If

    Next cl

    SumByFontColor = sum

    End Function

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

    Можно ли суммировать по цвету в сводной таблице?

    Сводные таблицы в Excel не поддерживают группировку по цветам ячеек. Обходной путь:

    1. Добавьте вспомогательный столбец с формулой, определяющей цвет (например, через GET.CELL или VBA).
    2. Создайте сводную таблицу, используя этот столбец как поле для группировки.

    Для условного форматирования этот метод не подходит — придётся дублировать логику правил в вспомогательном столбце.

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

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

    • Включены ли макросы в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов.
    • Не блокирует ли антивирус выполнение VBA (добавьте Excel в исключения).
    • Обновлены ли ссылки на библиотеки (если используете внешние модули).

    Если макросы по-прежнему не работают, попробуйте пересохранить файл в формате .xlsm (с поддержкой макросов).