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

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

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

Эта особенность становится проблемой, когда вам нужно:

  • 📊 Подсчитать количество ячеек с красным фоном в отчёте о просроченных платежах
  • 💰 Посчитать сумму только тех продаж, которые выделены красным как убыточные
  • 📅 Проанализировать даты в календаре, где красным отмечены выходные

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

📊 Какой тип красных ячеек вам нужно анализировать?
Ячейки с красным фоном
Ячейки с красным текстом
Ячейки, выделенные условным форматированием
Не знаю, что из этого

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

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

Как это работает:

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

После фильтрации вы увидите только красные ячейки. Их количество отобразится в строке состояния Excel (внизу окна). Чтобы получить сумму, просто выделите видимые ячейки — сумма появится там же.

Преимущества метода Ограничения метода
✅ Не требует знания формул ❌ Работает только для ручного подсчёта
✅ Быстро (2-3 клика) ❌ Не автоматизируется (нужно повторять при изменении данных)
✅ Визуально понятно ❌ Не подходит для динамических отчётов
⚠️ Внимание: Фильтр по цвету не различает ячейки, окрашенные вручную, и ячейки, которые стали красными из-за условного форматирования. Для последних нужен другой подход (см. Способ 3).

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

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

Инструкция по шагам:

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

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

  4. Нажмите OK и закройте диспетчер.
  5. Теперь в любой ячейке можно использовать формулу:
    =ЕСЛИ(ЦветЯчейки=3;1;0)

    где 3 — код красного цвета (может отличаться в вашей таблице!).

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

Sub ShowColorCode()

MsgBox Selection.Interior.ColorIndex

End Sub

Создать именованную формулу|Проверить код цвета (3 для стандартного красного)|Применить формулу ЕСЛИ к диапазону|Просуммировать результаты функцией СУММ-->

⚠️ Внимание: Код цвета 3 соответствует стандартному красному в палитре Excel. Если вы использовали пользовательский оттенок (например, через "Другие цвета"), функция может не сработать. В этом случае используйте GET.CELL(63,!A1) для RGB-кода.

Способ 3: VBA для условного форматирования

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

Пример кода для подсчёта ячеек, которые стали красными из-за правила "значение > 100":

Function CountRedCells(rng As Range) As Long

Dim cell As Range

Dim count As Long

count = 0

For Each cell In rng

If cell.Value > 100 Then ' Условие вашего правила

count = count + 1

End If

Next cell

CountRedCells = count

End Function

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (InsertModule).
  3. Вернитесь в Excel и используйте формулу как обычно:
    =CountRedCells(A1:A100)

Для суммы красных ячеек замените count = count + 1 на count = count + cell.Value.

Как узнать условие условного форматирования?

Откройте Главная → Условное форматирование → Управление правилами. В списке вы увидите все активные правила для выделенного диапазона. Например, если правило "Формула =$B1>100", то в макросе нужно проверять условие cell.Offset(0,1).Value > 100 (с учётом смещения столбца).

Способ 4: Power Query для сложных таблиц

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

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

  1. Выделите ваш диапазон и нажмите ДанныеИз таблицы/диапазона (в группе "Получить и преобразовать данные").
  2. В открывшемся редакторе Power Query добавьте пользовательский столбец с формулой:
    = if [@[ИмяВашегоСтолбца]] > 100 then "Красный" else "Обычный"

    (замените 100 на ваше условие).

  3. Отфильтруйте новый столбец по значению "Красный".
  4. Добавьте столбец с подсчётом или суммой (через Группировка).

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

Способ 5: Надстройка "ColorCounter" (для ленивых)

Если вам нужно одноразовое решение и не хочется разбираться в формулах или VBA, можно воспользоваться бесплатными надстройками. Одна из самых популярных — ColorCounter от Excel Campus.

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

  1. Скачайте надстройку с официального сайта (проверьте совместимость с вашей версией Excel).
  2. Установите через ФайлПараметрыНадстройкиПерейтиОбзор.
  3. После установки в меню появится новая вкладка Color Tools.
  4. Выделите диапазон и нажмите Count Colors — программа покажет количество ячеек каждого цвета.

Минус этого метода — зависимость от стороннего ПО. Если надстройка перестанет поддерживаться или конфликтует с вашим Excel, придётся искать альтернативу.

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

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

  1. Функция не видит красные ячейки

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

  2. Макрос выдаёт ошибку "Объект не поддерживает это свойство"

    Причина: Вы пытаетесь прочитать цвет ячейки, которая объединена с другими. Решение: предварительно разъедините ячейки или обработайте объединённые диапазоны отдельно.

  3. Код цвета не совпадает

    Причина: В вашей таблице используется нестандартный оттенок красного. Решение: используйте GET.CELL(63,!A1) для RGB-кода вместо ColorIndex.

  4. Фильтр по цвету не работает

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

  5. Power Query не обновляет данные

    Причина: Не настроено автоматическое обновление запроса. Решение: щёлкните правой кнопкой по таблице → Обновить.

⚠️ Внимание: Если вы работаете с защищёнными листами, макросы для подсчёта цветных ячеек могут не выполняться. Перед запуском кода временно снимите защиту (РецензированиеСнять защиту листа).

FAQ: Ответы на популярные вопросы

Можно ли посчитать красные ячейки в Excel Online?

Нет, Excel Online не поддерживает ни VBA, ни именованные формулы с GET.CELL. Ваши варианты:

  • Использовать фильтр по цвету (Способ 1).
  • Скачать файл в настольную версию Excel.
  • Применить условное форматирование с текстовыми метками (например, добавить столбец "Статус" с значением "Красный"), а затем использовать СЧЁТЕСЛИ.
Как посчитать ячейки с красным текстом, а не фоном?

Для подсчёта ячеек с красным шрифтом:

  • В GET.CELL используйте код 24 вместо 38 (для цвета шрифта).
  • В VBA проверяйте свойство cell.Font.ColorIndex.

Пример макроса:

Function CountRedText(rng As Range) As Long

Dim cell As Range

For Each cell In rng

If cell.Font.ColorIndex = 3 Then ' 3 - стандартный красный текст

CountRedText = CountRedText + 1

End If

Next

End Function

Почему моя формула с GET.CELL возвращает #NAME?

Ошибка #NAME означает, что:

  • Вы не создали именованную формулу в диспетчере имён.
  • Или ввели имя с ошибкой (регистр важен!)
  • Или используете GET.CELL напрямую в ячейке — это недопустимо.

Решение: проверьте имя в диспетчере и убедитесь, что формула введена как =ИмяЯчейки(!A1).

Можно ли посчитать красные ячейки в Google Таблицах?

В Google Таблицах нет аналога GET.CELL, но есть обходные пути:

  1. Используйте App Script (аналог VBA):
    function countRedCells() {
    

    var sheet = SpreadsheetApp.getActiveSheet();

    var range = sheet.getDataRange();

    var count = 0;

    range.getValues().forEach((row, i) => {

    row.forEach((cell, j) => {

    if (range.getCell(i+1, j+1).getBackground() === "#ff0000") count++;

    });

    });

    return count;

    }

  2. Добавьте вспомогательный столбец с формулой, которая дублирует условие условного форматирования, а затем используйте COUNTIF.
Как посчитать красные ячейки в сводной таблице?

Сводные таблицы не поддерживают подсчёт по цвету напрямую. Альтернативы:

  • Создайте вычисляемое поле в исходных данных, которое будет отмечать красные ячейки (например, =ЕСЛИ(A1>100;1;0)), затем добавьте его в сводную таблицу.
  • Используйте Power Pivot (для Excel 2013+) с мерой, которая учитывает условие окраски.