Сумма непустых ячеек в Excel: формулы, фильтры и скрытые возможности

Почему стандартная функция СУММ не всегда подходит

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

В этой статье мы разберём 5 проверенных методов, как посчитать сумму именно непустых ячеек — от простых формул до продвинутых приёмов с массивами и Power Query. Каждый способ проиллюстрирован примерами и подходит для разных версий Excel (2010–2023, включая Office 365). Вы узнаете, как обойти подводные камни с "пустыми" формулами, скрытыми символами и ошибками #ЗНАЧ!.

Особое внимание уделим случаям, когда ячейки визуально пустые, но на самом деле содержат пробелы, неразрывные пробелы (CHAR(160)) или нулевые значения. Эти нюансы часто становятся причиной ошибок в расчётах.

📊 Какой версией Excel вы пользуетесь?
Excel 2010-2016
Excel 2019
Office 365 (Excel Online)
Macros for Excel
Другая

Метод 1: Функция СУММЕСЛИ для игнорирования пустых ячеек

Самый универсальный способ — использовать СУММЕСЛИ с критерием "<>""" (не равно пустой строке). Формула выглядит так:

=СУММЕСЛИ(диапазон; "<>""; [диапазон_суммирования])

Если диапазон суммирования совпадает с проверяемым, третий аргумент можно опустить:

=СУММЕСЛИ(A1:A10; "<>""; A1:A10)  →  =СУММЕСЛИ(A1:A10; "<>""")

Пример: чтобы просуммировать непустые ячейки в столбце B2:B20, где могут быть пустые строки или текст, используйте:

=СУММЕСЛИ(B2:B20; "<>""")
  • ✅ Работает во всех версиях Excel, включая Excel 2010.
  • ✅ Игнорирует ячейки с формулами, возвращающими "".
  • ⚠️ Не суммирует ячейки с 0 (ноль считается непустым значением).
  • ⚠️ Может давать ошибку #ЗНАЧ!, если в диапазоне есть текст.
⚠️ Внимание: Если в ячейках есть пробелы или непечатаемые символы (например, CHAR(160)), СУММЕСЛИ посчитает их как непустые. Чтобы очистить данные, используйте =ПЕЧСИМВ(A1).

Убедитесь, что в диапазоне нет текстовых значений|Проверьте ячейки на скрытые символы функцией ПЕЧСИМВ|Учтите, что 0 будет включён в сумму|Для больших диапазонов (>10 000 строк) используйте СУММЕСЛИМН

-->

Метод 2: Комбинация СУММПРОИЗВ + ЕНД для точного контроля

Если нужно суммировать только числовые значения, игнорируя текст, пустые ячейки и ошибки, подойдёт формула с СУММПРОИЗВ и ЕНД:

=СУММПРОИЗВ(--ЕНД(A1:A10); A1:A10)

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

  1. ЕНД(A1:A10) возвращает ИСТИНА для непустых ячеек и ЛОЖЬ для пустых.
  2. -- преобразует ИСТИНА/ЛОЖЬ в 1/0.
  3. СУММПРОИЗВ умножает каждый элемент на 1 (если ячейка непустая) или 0 (если пустая) и суммирует результат.

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

  • 🔹 Игнорирует текстовые значения (в отличие от СУММЕСЛИ).
  • 🔹 Работает с массивами — можно суммировать по нескольким критериям.
  • 🔹 Не выдаёт ошибку #ЗНАЧ! при наличии текста.
ФормулаСуммирует пустыеСуммирует текстСуммирует 0Работает с массивами
СУММ❌ Нет⚠️ Да (ошибка)✅ Да❌ Нет
СУММЕСЛИ(;;"<>""")❌ Нет⚠️ Да (ошибка)✅ Да❌ Нет
СУММПРОИЗВ(--ЕНД();)❌ Нет❌ Нет✅ Да✅ Да
=СУММПРОИЗВ(--(A1:A10<>0)--ЕНД(A1:A10); A1:A10)

-->

Метод 3: Функция СУММЕСЛИМН для сложных условий

Если нужно суммировать непустые ячейки с дополнительными критериями (например, только положительные числа или значения больше 100), используйте СУММЕСЛИМН:

=СУММЕСЛИМН(A1:A10; A1:A10; "<>""; A1:A10; ">100")

Эта формула просуммирует ячейки в A1:A10, которые:

  • ✅ Не пустые ("<>"").
  • ✅ Содержат числа больше 100 (">100").

Пример для суммирования непустых ячеек в столбце B, где соответствующие ячейки в столбце A содержат слово "Да":

=СУММЕСЛИМН(B2:B100; A2:A100; "Да"; B2:B100; "<>""")
⚠️ Внимание: В Excel 2010–2016 СУММЕСЛИМН ограничена 127 парами условий. В Office 365 это ограничение снято.
Как суммировать непустые ячейки по цвету?

Используйте пользовательскую функцию VBA или надстройку Kutools for Excel. Пример кода VBA:

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

Dim cl As Range, sum As Double

sum = 0

For Each cl In rng

If cl.Interior.Color = color.Interior.Color And cl.Value <> "" Then

sum = sum + cl.Value

End If

Next cl

SumByColor = sum

End Function

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

Метод 4: Power Query для динамических данных

Если вы работаете с большими наборами данных (тысячи строк) или нужна автоматическая обработка, Power Query — идеальное решение. Алгоритм:

  1. Выделите диапазон и перейдите на вкладку Данные → Из таблицы/диапазона.
  2. В редакторе Power Query выберите столбец, который нужно суммировать.
  3. Нажмите Главная → Заменить значения и замените пустые ячейки на null.
  4. Добавьте пользовательский столбец с формулой = if [Column1] <> null then [Column1] else 0.
  5. Суммируйте новый столбец функцией Table.ColumnSum.

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

  • 📊 Обрабатывает миллионы строк без тормозов.
  • 🔄 Автоматически обновляет результаты при изменении данных.
  • 🛠️ Позволяет очищать данные (удалять пробелы, исправлять ошибки) перед суммированием.

Пример кода на языке M для Power Query:

let

Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

ЗаменаПустых = Table.ReplaceValue(Источник,null,0,Replacer.ReplaceValue,{"Столбец1"}),

Сумма = List.Sum(ЗаменаПустых[Столбец1])

in

Сумма

Метод 5: VBA для автоматизации (продвинутый уровень)

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

Function SumNonEmpty(rng As Range) As Double

Dim cell As Range, sum As Double

sum = 0

For Each cell In rng

If Not IsEmpty(cell) And cell.Value <> "" Then

If IsNumeric(cell.Value) Then

sum = sum + cell.Value

End If

End If

Next cell

SumNonEmpty = sum

End Function

Теперь в Excel можно использовать:

=SumNonEmpty(A1:A100)

Что делает этот код:

  • 🔍 Проверяет ячейку на IsEmpty (истинно пустая) и Value <> "" (не содержит пустую строку).
  • 🔢 Добавляет к сумме только числовые значения (IsNumeric).
  • ⚡ Работает в 10–100 раз быстрее, чем формулы, для больших диапазонов.
⚠️ Внимание: Перед использованием VBA убедитесь, что в настройках Excel разрешено выполнение макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы). В противном случае функция вернёт ошибку #ИМЯ?.

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

Выбор способа зависит от задачи:

МетодСложностьСкоростьПодходит дляОграничения
СУММЕСЛИ⚡ БыстроПростые таблицы, небольшие диапазоныНе игнорирует текст, ошибки
СУММПРОИЗВ + ЕНД⭐⭐⚡⚡ Очень быстроСложные условия, массивыТребует знания формул массива
СУММЕСЛИМН⭐⭐⚡ БыстроМножественные критерииОграничение 127 условий в Excel 2016
Power Query⭐⭐⭐⚡⚡⚡ МгновенноБольшие данные, автоматическая обработкаТребует навыков M-языка
VBA⭐⭐⭐⭐⚡⚡⚡⚡ Самая быстраяРегулярные задачи, сложная логикаНужно разрешать макросы

Критическая ошибка: если в ячейках есть формулы вида =ЕСЛИ(условие; ""; значение), то СУММЕСЛИ и ЕПУСТО посчитают их как пустые, хотя на самом деле они содержат формулу. В этом случае используйте СУММПРОИЗВ(--(ДЛСТР(A1:A10)>0); A1:A10).

FAQ: Частые вопросы и ошибки

Почему СУММЕСЛИ не игнорирует ячейки с пробелами?

Функция СУММЕСЛИ проверяет ячейки на равенство "" (пустая строка), но пробел (" ") или неразрывный пробел (CHAR(160)) — это непустые символы. Чтобы очистить данные, используйте:

=СУММЕСЛИ(ПЕЧСИМВ(A1:A10); "<>""")

или замените пробелы на пустую строку:

=СУММЕСЛИ(ЗАМЕНИТЬ(A1:A10; " "; ""); "<>""")
Как суммировать непустые ячейки в фильтрованном диапазоне?

Используйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ с функцией 109 (сумма видимых ячеек):

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(109; A1:A10)

Если нужно учитывать дополнительные условия (например, только непустые ячейки), комбинируйте с СУММПРОИЗВ:

=СУММПРОИЗВ(--(ПОДИТОГ(103; СМЕЩ(A1; СТРОКА(A1:A10)-1; 0))>0); --ЕНД(A1:A10); A1:A10)
Можно ли суммировать непустые ячейки по цвету без VBA?

Без VBA это невозможно — Excel не предоставляет встроенных функций для работы с цветами ячеек. Альтернативы:

  • Используйте надстройку Kutools for Excel (функция Sum by Color).
  • Добавьте вспомогательный столбец с формулой, определяющей цвет (например, =ЕСЛИ(УСЛОВНОЕ_ФОРМАТИРОВАНИЕ_ЦВЕТ(A1)=1; A1; 0)), и суммируйте его.
Почему формула возвращает #ЗНАЧ!?

Ошибка #ЗНАЧ! возникает, если в диапазоне суммирования есть текстовые значения. Решения:

  • Используйте СУММПРОИЗВ(--ЕНД();) — она игнорирует текст.
  • Добавьте проверку на числовое значение: =СУММЕСЛИ(A1:A10; "<>"""; B1:B10) + ЕСЛИОШИБКА(СУММ(B1:B10); 0).
  • Очистите данные от текста функцией =ЕСЛИ(ЕЧИСЛО(A1); A1; 0).
Как посчитать количество непустых ячеек?

Для подсчёта (а не суммирования) используйте:

=СЧЁТЕСЛИ(A1:A10; "<>""")

Если нужно игнорировать ячейки с 0:

=СУММПРОИЗВ(--(A1:A10<>0)--(A1:A10<>""))