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

Почему стандартная функция СУММ не работает с фильтрами

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

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

📊 Как часто вы используете фильтры в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Метод 1: Функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ — универсальное решение

Самый надёжный способ суммировать отфильтрованные данные — использовать функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ (англ. SUBTOTAL). Она умеет игнорировать скрытые строки и работает даже с ручной фильтрацией (когда вы скрываете строки вручную через контекстное меню).

Синтаксис функции:

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9; диапазон)

Где 9 — это код операции «Сумма» (другие коды смотрите в таблице ниже). Например, для столбца B2:B100 формула будет:

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9; B2:B100)
КодОперацияУчитывает скрытые строки?
1СРЗНАЧНет
2СЧЁТНет
3СЧЁТЗНет
9СУММНет
109СУММ (включая скрытые)Да

⚠️ Внимание: Если в вашей таблице есть промежуточные итоги (вставленные через Данные → Итоги), функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ будет учитывать только их, а не исходные данные. Чтобы избежать ошибок, удалите вручную добавленные итоги перед использованием функции.

Убедитесь, что фильтр применён корректно|Проверьте, нет ли в таблице ручных скрытых строк|Удалите промежуточные итоги (если есть)|Используйте код 9 для суммы-->

Метод 2: Функция АГРЕГАТ — гибкая альтернатива

Функция АГРЕГАТ (англ. AGGREGATE) появилась в Excel 2010 и предлагает больше возможностей, чем ПРОМЕЖУТОЧНЫЕ.ИТОГИ. Она умеет:

  • 🔹 Игнорировать скрытые строки и ошибки
  • 🔹 Работать с диапазонами, содержащими текст или пустые ячейки
  • 🔹 Использовать до 19 различных операций (от суммы до стандартного отклонения)

Синтаксис для суммы отфильтрованных данных:

=АГРЕГАТ(9; 5; диапазон)

Где:

  • 9 — код операции «Сумма» (аналог СУММ)
  • 5 — параметр «игнорировать скрытые строки и ячейки с ошибками»

Важно: АГРЕГАТ не работает с таблицами Excel (объектами Table), созданными через Вставка → Таблица. В этом случае используйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ.

Метод 3: Формула массива для сложных фильтров

Если вам нужно суммировать данные с дополнительными условиями (например, только видимые строки, где значение в другом столбце больше 100), стандартные функции не помогут. Здесь пригодятся формулы массива с комбинацией ЕСЛИ, ПОДСТАВИТЬ и СУММ.

Пример: суммировать видимые значения в столбце B, только если соответствующая ячейка в столбце A содержит текст «Да»:

=СУММ(ЕСЛИ(ПОДСТАВИТЬ(1/СЧЁТЕСЛИ(А2:А100; "Да"); 0; 1)*(ПОДСТАВИТЬ(СТРОКА(A2:A100)-МИН(СТРОКА(A2:A100))+1; ; 0))=0; B2:B100))

Эта формула:

  1. Проверяет условие в столбце A (значение = «Да»)
  2. Определяет, видна ли строка (не скрыта фильтром)
  3. Суммирует только те значения из B, которые соответствуют обоим критериям

⚠️ Внимание: Формулы массива требуют подтверждения клавишами Ctrl+Shift+Enter (в Excel 365 и 2019 — автоматически). Если забыть это сделать, формула вернёт ошибку #ЗНАЧ!.

Как вводить формулы массива в Excel 365?

В новых версиях Excel (365 и 2021) формулы массива вводятся автоматически — просто нажмите Enter. Однако для совместимости со старыми версиями рекомендуется использовать Ctrl+Shift+Enter, особенно если файл будут открывать в Excel 2016 или ранее.

Метод 4: Макрос VBA для автоматизации

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

Function SumFiltered(rng As Range) As Double

Dim cell As Range

Dim total As Double

total = 0

For Each cell In rng

If Not cell.EntireRow.Hidden Then

total = total + cell.Value

End If

Next cell

SumFiltered = total

End Function

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (Insert → Module).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
  4. Введите в ячейке: =SumFiltered(B2:B100).

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

  • 🔹 Работает с любыми фильтрами, включая пользовательские
  • 🔹 Можно модифицировать под дополнительные условия
  • 🔹 Не зависит от версий Excel (кроме очень старых)

⚠️ Внимание: Макросы блокируются по умолчанию в Excel. Чтобы функция заработала, разрешите выполнение макросов в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов (выберите «Включить все макросы»).

Метод 5: Power Query для больших данных

Если вы работаете с огромными таблицами (десятки тысяч строк), обычные функции могут тормозить. В этом случае поможет Power Query — инструмент для преобразования данных, встроенный в Excel 2016 и новее.

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

  1. Выделите исходную таблицу и нажмите Данные → Из таблицы/диапазона (в Excel 2016+) или Power Query → Из таблицы (в Excel 2013).
  2. В открывшемся редакторе Power Query примените фильтр к нужному столбцу (кликните на стрелку в заголовке столбца).
  3. Перейдите на вкладку ПреобразованиеГруппировка, выберите столбец для суммирования и операцию «Сумма».
  4. Нажмите Закрыть и загрузить — результат появится на новом листе.

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

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

Каждый способ имеет свои плюсы и минусы. Выбор зависит от задачи:

МетодПлюсыМинусыКогда использовать
ПРОМЕЖУТОЧНЫЕ.ИТОГИ Простота, работает во всех версиях Не поддерживает дополнительные условия Для быстрых расчётов в небольших таблицах
АГРЕГАТ Гибкость, игнорирует ошибки Не работает с таблицами Excel Для сложных диапазонов с ошибками
Формула массива Поддерживает несколько условий Сложный синтаксис, тормозит на больших данных Для расчётов с дополнительной логикой
VBA-макрос Автоматизация, работает с любыми фильтрами Требует навыков программирования Для повторяющихся задач
Power Query Обрабатывает миллионы строк, сохраняет результат Дополнительные действия для обновления данных Для больших отчётов и регулярной аналитики

Если вы новичок, начните с ПРОМЕЖУТОЧНЫЕ.ИТОГИ — этого хватит для 90% задач. Для автоматизации рутинных операций освойте Power Query или VBA.

FAQ: Частые вопросы по суммированию отфильтрованных данных

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

Да, в Google Таблицах работает функция SUBTOTAL (аналог ПРОМЕЖУТОЧНЫЕ.ИТОГИ). Синтаксис:

=SUBTOTAL(9; B2:B100)

Также поддерживается AGGREGATE (с 2020 года). А вот формулы массива и VBA в Google Таблицах не работают.

Почему ПРОМЕЖУТОЧНЫЕ.ИТОГИ возвращает 0, хотя фильтр применён?

Это происходит в трёх случаях:

  1. В отфильтрованном диапазоне нет числовых значений (только текст или пустые ячейки).
  2. Фильтр скрыл все строки — проверьте критерии фильтрации.
  3. Вы используете код операции 109 вместо 9 (109 учитывает скрытые строки).
Как суммировать отфильтрованные строки по цвету ячейки?

Стандартными функциями это невозможно. Варианты решений:

  • 🔹 Использовать VBA-макрос с проверкой цвета через cell.Interior.Color.
  • 🔹 Добавить вспомогательный столбец с формулой, определяющей цвет (например, через УСЛОВНОЕ ФОРМАТИРОВАНИЕ), и суммировать по нему.

Пример VBA-кода для суммы по красному цвету:

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

Dim cell As Range, total As Double

total = 0

For Each cell In rng

If cell.Interior.Color = color.Interior.Color And Not cell.EntireRow.Hidden Then

total = total + cell.Value

End If

Next cell

SumByColor = total

End Function

Вызов: =SumByColor(B2:B100; D1), где D1 — ячейка с образцом цвета.

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

Да, сводные таблицы автоматически пересчитывают итоги при применении фильтров. Достаточно:

  1. Создать сводную таблицу (Вставка → Сводная таблица).
  2. Добавить нужное поле в область «Значения» (по умолчанию будет сумма).
  3. Применить фильтр через «Настройки полей» или срезы.

Итоги в сводной таблице всегда учитывают текущие фильтры.

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

Частая ошибка — копирование формулы с абсолютными ссылками ($B$2:$B$100) или без учёта смещения. Проверьте:

  • 🔹 Используйте относительные ссылки (например, B2:B100), если копируете формулу в другие ячейки.
  • 🔹 Для ПРОМЕЖУТОЧНЫЕ.ИТОГИ и АГРЕГАТ ссылки должны охватывать весь диапазон данных, а не только видимую часть.