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

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

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

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

Предупреждаем сразу: если вы работаете с Excel Online или мобильной версией, часть методов будет недоступна. Но для десктопных версий Excel 2016–2026 (включая Microsoft 365) все решения из этой статьи работают стабильно.

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

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

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

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

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

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

Выбрать "Фильтр по цвету" в выпадающем меню|

Посмотреть итог в строке состояния (правый нижний угол)-->

⚠️ Внимание: Этот метод показывает сумму только в строке состояния (внизу окна Excel). Если вам нужно вставить результат в ячейку, придётся копировать его вручную или использовать следующий способ.

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

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

Это полускрытая функция Excel, которая позволяет получать информацию о форматировании ячеек, включая цвет. Она не документирована в справочнике Microsoft, но работает во всех версиях программы. Минус — требует предварительной настройки.

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

  1. Создайте именованный диапазон:
    =GET.CELL(38,!A1)

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

  2. Присвойте этому диапазону имя, например ЦветЯчейки.
  3. В любой ячейке используйте формулу:
    =СУММПРОИЗВ(--(ЦветЯчейки=3); A1:A100)

    (где 3 — номер цвета, A1:A100 — диапазон для суммирования).

⚠️ Внимание: Номера цветов в GET.CELL не соответствуют стандартной палитре Excel. Чтобы узнать номер нужного цвета, используйте формулу =GET.CELL(38, A1) и покрасьте ячейку A1 в интересующий вас оттенок.

Цвет заполнения Номер в GET.CELL Пример формулы
Красный (стандартный) 3 =СУММПРОИЗВ(--(ЦветЯчейки=3); A1:A10)
Зелёный (стандартный) 4 =СУММПРОИЗВ(--(ЦветЯчейки=4); B1:B10)
Жёлтый (условное форматирование) 6 =СУММПРОИЗВ(--(ЦветЯчейки=6); C1:C10)
Без заливки 0 =СУММПРОИЗВ(--(ЦветЯчейки=0); D1:D10)

Этот метод подходит для динамических таблиц, где цвета могут меняться. Однако он требует знания номеров цветов и предварительной настройки именованных диапазонов.

Фильтрация по цвету|

Функция GET.CELL|

Надстройка "Color Sum"|

VBA-макрос|

Никогда не пробовал-->

Метод 3: Надстройка "Color Sum" (для тех, кто не хочет кодить)

Если вам нужно регулярно суммировать по цвету, но писать макросы или разбираться с GET.CELL нет времени, воспользуйтесь бесплатной надстройкой "Color Sum". Она добавляет в Excel специальную функцию =COLORSUM(), которая работает как обычная СУММ, но учитывает цвет ячеек.

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

  • 📥 Скачайте файл ColorSum.xlam с официального сайта Appelsiini.
  • 🖱️ В Excel перейдите в Файл → Параметры → НадстройкиПерейти (внизу окна).
  • 📁 Нажмите Обзор, выберите скачанный файл и подтвердите установку.
  • ✅ После перезагрузки Excel у вас появится новая функция =COLORSUM(диапазон; цвет).

Примеры использования:

  • 🔴 =COLORSUM(A1:A10; "red") — сумма красных ячеек.
  • 🟢 =COLORSUM(B1:B20; RGB(0,255,0)) — сумма ячеек зелёного цвета (по RGB-коду).
  • 🟡 =COLORSUM(C1:C15; "yellow"; TRUE) — сумма жёлтых ячеек, включая условное форматирование.

⚠️ Внимание: Надстройка может конфликтовать с другими VBA-проектами в книге. Если после установки Excel начинает тормозить, попробуйте отключить другие макросы или использовать GET.CELL вместо надстройки.

Метод 4: VBA-макрос для автоматического суммирования

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

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

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

    Dim cl As Range

    Dim sum As Double

    sum = 0

    For Each cl In rng

    If cl.Interior.Color = color.Interior.Color Then

    sum = sum + cl.Value

    End If

    Next cl

    SumByColor = sum

    End Function

  4. Закройте редактор и вернитесь в Excel.

Теперь вы можете использовать новую функцию =SumByColor() прямо в ячейках. Пример: =SumByColor(A1:A10; D1), где D1 — ячейка с образцом цвета.

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

  • 🔄 Работает с динамическими диапазонами (если данные добавляются автоматически).
  • 🎨 Распознаёт любые цвета, включая пользовательские оттенки.
  • ⚡ Обновляется при изменении цветов (если включен автоматический пересчёт).

⚠️ Внимание: Макрос не будет работать в файлах с расширением .xlsx — их нужно сохранить как .xlsm (с поддержкой макросов). Также он может блокироваться настройками безопасности Excel (проверьте Файл → Параметры → Центр управления безопасностью).

Как ускорить работу макроса для больших таблиц?

Если ваш диапазон содержит больше 10 000 ячеек, замените цикл For Each на работу с массивами:

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

Dim arr As Variant, cl As Range, i As Long, sum As Double

arr = rng.Value

For i = 1 To UBound(arr, 1)

If rng.Cells(i, 1).Interior.Color = color.Interior.Color Then

sum = sum + arr(i, 1)

End If

Next i

SumByColorFast = sum

End Function

Это ускорит вычисления в 5–10 раз.

Метод 5: Power Query (для Excel 2016 и новее)

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

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

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

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

  3. Отфильтруйте новый столбец по нужному цвету и суммируйте данные.
  4. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

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

Этот метод оправдан, если вы работаете с большими наборами данных (100 000+ строк) и нуждаетесь в автоматизации. Для разовых задач проще использовать GET.CELL или макрос.

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

Чтобы вам было проще определиться, мы свели все способы в одну таблицу с плюсами и минусами. Ориентируйтесь на размер данных, навыки работы с Excel и необходимость автоматизации.

Метод Сложность Работает с условным форматированием Автообновление Когда использовать
Фильтрация + ручной сумм ❌ Нет ❌ Нет Разовые задачи, маленькие таблицы
Функция GET.CELL ⭐⭐⭐ ✅ Да ✅ Да Средние таблицы, нужна формула
Надстройка Color Sum ⭐⭐ ✅ Да (с флагом TRUE) ✅ Да Регулярное использование, нет желания кодить
VBA-макрос ⭐⭐⭐⭐ ✅ Да ✅ Да Сложные задачи, большие данные, автоматизация
Power Query ⭐⭐⭐⭐ ❌ Нет ✅ Да Интеграция с внешними данными, ETL-процессы

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

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

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

Да, но для этого нужно модифицировать макрос или использовать GET.CELL с другим параметром. Для цвета шрифта в GET.CELL используйте код 24 вместо 38. Пример:

=СУММПРОИЗВ(--(ЦветШрифта=1); A1:A10)

Где ЦветШрифта — именованный диапазон с формулой =GET.CELL(24,!A1).

Почему макрос SumByColor возвращает 0 для цветных ячеек?

Скорее всего, вы сравниваете цвета из разных книг или листов. VBA чувствителен к точному совпадению цветов, включая альфа-канал (прозрачность). Чтобы исправить:

  1. Проверьте, что образец цвета (color) и ячейки для суммирования находятся на одном листе.
  2. Используйте RGB-коды для унификации: If cl.Interior.Color = RGB(255, 0, 0) Then.
Как суммировать по цвету в Google Таблицах?

В Google Sheets нет встроенных инструментов для суммирования по цвету, но можно использовать App 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, вставьте код и нажмите Выполнить.

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

Нет. Ни один из методов не распознаёт градиенты или узоры заливки — только сплошные цвета. Если вам нужно суммировать по градиенту, придётся вручную назначить каждому оттенку отдельный цвет из палитры Excel.

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

Если вы используете GET.CELL или VBA, суммы обновятся автоматически. Для фильтрации или надстройки Color Sum:

  • Скопируйте результаты и вставьте как значения (Ctrl + Shift + V → Значения).
  • Или преобразуйте формулы в статические данные через Копировать → Специальная вставка → Значения.