Подсчет заполненных ячеек в Microsoft Excel — одна из самых востребованных операций при работе с данными. Без этого навыка невозможно анализировать большие таблицы, строить отчеты или проверять корректность введенной информации. Но как правильно посчитать количество непустых ячеек, если в них содержатся числа, текст, даты или даже ошибки? Оказывается, в Excel есть сразу несколько функций для этой задачи — и каждая работает по-своему.
Многие пользователи допускают ошибку, используя функцию СЧЁТ (COUNT) для подсчета всех заполненных ячеек. На самом деле она учитывает только числовые значения, игнорируя текст, логические значения и пустые ячейки. В этой статье мы разберем 7 рабочих методов — от базовых до продвинутых, — которые помогут точно посчитать непустые ячейки в любых сценариях: от простых списков до сложных условий с несколькими критериями.
Вы узнаете:
- 🔹 Какая функция подходит для подсчета всех непустых ячеек (включая текст и ошибки)
- 🔹 Как посчитать ячейки с конкретным значением или по условию
- 🔹 В чем разница между
СЧЁТЗ,СЧИТАТЬПУСТОТЫиCOUNTA - 🔹 Как обойти ограничения стандартных функций с помощью массивов и Power Query
1. Базовая функция СЧЁТЗ (COUNTA): подсчет всех непустых ячеек
Функция СЧЁТЗ (COUNTA в английской версии) — самый простой и универсальный способ посчитать количество заполненных ячеек в диапазоне. Она учитывает:
- 📌 Числа (включая даты и время)
- 📌 Текстовые строки
- 📌 Логические значения (
ИСТИНА/ЛОЖЬ) - 📌 Ошибки (
#ДЕЛ/0!,#Н/Ди др.) - 📌 Формулы, возвращающие пустую строку (
="")
Единственное, что СЧЁТЗ игнорирует — это истинно пустые ячейки (без формул и значений). Синтаксис функции:
=СЧЁТЗ(значение1; [значение2]; ...)
Пример: Подсчитаем количество заполненных ячеек в диапазоне A1:A10:
=СЧЁТЗ(A1:A10)
⚠️ Внимание: Если в ячейке есть формула, возвращающая пустую строку (например,=ЕСЛИ(A1=0;"";"Заполнено")), функцияСЧЁТЗпосчитает её как непустую. Чтобы исключить такие случаи, используйте комбинацию сСЧИТАТЬПУСТОТЫ.
Для наглядности сравним работу СЧЁТЗ с другими функциями:
| Функция | Считает числа | Считает текст | Считает ошибки | Считает пустые ячейки | Считает ИСТИНА/ЛОЖЬ |
|---|---|---|---|---|---|
СЧЁТЗ |
✅ Да | ✅ Да | ✅ Да | ❌ Нет | ✅ Да |
СЧЁТ |
✅ Да | ❌ Нет | ❌ Нет | ❌ Нет | ❌ Нет |
СЧИТАТЬПУСТОТЫ |
❌ Нет | ❌ Нет | ❌ Нет | ✅ Да | ❌ Нет |
2. СЧЁТЕСЛИ и СЧЁТЕСЛИМН: подсчет ячеек по условию
Если нужно посчитать не просто заполненные ячейки, а те, которые соответствуют определенному критерию, используйте функции СЧЁТЕСЛИ (COUNTIF) или СЧЁТЕСЛИМН (COUNTIFS). Они позволяют:
- 🔍 Подсчитать ячейки с конкретным текстом (например, "Да" или "Одобрено")
- 🔢 Найти числа в заданном диапазоне (больше 100, меньше 0 и т.д.)
- 📅 Отфильтровать даты (например, только за текущий месяц)
Синтаксис СЧЁТЕСЛИ:
=СЧЁТЕСЛИ(диапазон; критерий)
Примеры:
- Подсчет ячеек со словом "Да" в диапазоне
B2:B100:=СЧЁТЕСЛИ(B2:B100; "Да") - Подсчет чисел больше 50 в диапазоне
C2:C50:=СЧЁТЕСЛИ(C2:C50; ">50") - Подсчет непустых ячеек (альтернатива
СЧЁТЗ):=СЧЁТЕСЛИ(A1:A100; "<>""")
Для нескольких условий используйте СЧЁТЕСЛИМН (COUNTIFS):
=СЧЁТЕСЛИМН(диапазон1; условие1; [диапазон2; условие2]; ...)
Пример: Подсчитаем количество строк, где в столбце A указан "Мужчина", а в столбце B возраст больше 30:
=СЧЁТЕСЛИМН(A2:A100; "Мужчина"; B2:B100; ">30")
3. Подсчет ячеек с формулами (включая пустые результаты)
Стандартные функции СЧЁТЗ или СЧЁТЕСЛИ не всегда корректно работают с ячейками, содержащими формулы. Например, если в ячейке формула =ЕСЛИ(A1=0;"";"Есть данные"), которая возвращает пустую строку, СЧЁТЗ посчитает её как заполненную. Чтобы обойти это ограничение, используйте:
Способ 1: Функция ЕПУСТО + СУММПРОИЗВ
Комбинация ЕПУСТО (ISBLANK) и СУММПРОИЗВ (SUMPRODUCT) позволяет посчитать истинно пустые ячейки (без формул и значений), а затем вычесть их из общего количества:
=СЧЁТЗ(диапазон) - СУММПРОИЗВ(--ЕПУСТО(диапазон))
Пример: Подсчет ячеек с формулами или данными в A1:A20 (исключая истинно пустые):
=СЧЁТЗ(A1:A20) - СУММПРОИЗВ(--ЕПУСТО(A1:A20))
Способ 2: Пользовательская функция на VBA
Для продвинутых пользователей можно создать собственную функцию, которая будет учитывать наличие формул:
Function CountFormulas(rng As Range) As Long
Dim cell As Range
For Each cell In rng
If cell.HasFormula Then CountFormulas = CountFormulas + 1
Next cell
End Function
Используйте её в таблице как:
=CountFormulas(A1:A100)
⚠️ Внимание: Пользовательские функции VBA работают только в версии Excel для Windows и требуют включения макросов. В Excel Online или Mac-версии этот метод недоступен.
4. Подсчет уникальных непустых значений
Если нужно посчитать количество уникальных непустых значений в диапазоне (например, список уникальных клиентов или товаров), стандартные функции не подойдут. Здесь поможет комбинация:
- 🔹
ЧСТРОК(ROWS) +УНИК(UNIQUE) — в Excel 365 и Excel 2021 - 🔹
СУММПРОИЗВ+ЧАСТОТА— в старых версиях
Для Excel 365/2021:
=ЧСТРОК(УНИК(A2:A100)) - 1
Минус 1 нужен, чтобы исключить пустую строку, которую УНИК добавляет автоматически.
Для Excel 2019 и старше:
=СУММПРОИЗВ(--(ЧАСТОТА(ЕСЛИ(A2:A100<>""; СТРОКА(A2:A100)-1); СТРОКА(A2:A100)-1)>0))
Эта формула массива требует подтверждения клавишами Ctrl+Shift+Enter в старых версиях Excel.
Почему формула массива работает медленно?
Формулы массива (вводимые через Ctrl+Shift+Enter) пересчитывают все возможные комбинации данных, что может замедлять работу с большими диапазонами (более 10 000 строк). В Excel 365 эту проблему решает функция УНИК, которая оптимизирована для больших массивов.
5. Подсчет заполненных ячеек в фильтрованном диапазоне
При работе с отфильтрованными данными (например, после применения Фильтра или Среза) стандартные функции СЧЁТЗ или СЧЁТЕСЛИ будут учитывать все ячейки, включая скрытые. Чтобы посчитать только видимые (отфильтрованные) строки, используйте функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ (SUBTOTAL):
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; диапазон)
Где 3 — это код операции для функции СЧЁТЗ (подсчет непустых ячеек). Другие полезные коды:
- 🔢
2—СЧЁТ(только числовые значения) - 🔹
103—СЧЁТЗс учетом скрытых строк вручную (но не фильтром)
Пример: Подсчет видимых непустых ячеек в отфильтрованном столбце B:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; B2:B1000)
⚠️ Внимание: ФункцияПРОМЕЖУТОЧНЫЕ.ИТОГИигнорирует строки, скрытые фильтром, но учитывает строки, скрытые вручную (через контекстное меню "Скрыть"). Чтобы исключить и их, используйте код103вместо3.
6. Продвинутые методы: Power Query и массивы
Для обработки больших объемов данных (десятки тысяч строк) или сложных условий стандартные функции Excel могут работать слишком медленно. В таких случаях поможет:
Метод 1: Power Query (Get & Transform)
Инструмент Power Query позволяет загружать данные, фильтровать пустые значения и подсчитывать непустые ячейки без формул. Алгоритм:
- Выделите диапазон и перейдите на вкладку
Данные → Получение данных → Из таблицы/диапазона. - В редакторе Power Query выберите столбец, кликните правой кнопкой и выберите
Удалить пустые. - Добавьте столбец с подсчетом строк:
Добавить столбец → Индекс. - Верните данные в Excel:
Главная → Закрыть и загрузить.
Power Query автоматически обновляет результаты при изменении исходных данных — в отличие от формул, которые требуют ручного пересчета.
Метод 2: Динамические массивы (Excel 365)
В новых версиях Excel можно использовать функции ФИЛЬТР (FILTER) и СТРОКА (ROW) для гибкого подсчета:
=СЧЁТ(ФИЛЬТР(A2:A100; A2:A100<>""))
Эта формула:
- 🔹 Фильтрует диапазон
A2:A100, оставляя только непустые ячейки - 🔹 Подсчитывает количество оставшихся строк с помощью
СЧЁТ
☑️ Подготовка к подсчету непустых ячеек
7. Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при подсчете заполненных ячеек. Вот самые распространенные:
| Ошибка | Причина | Решение |
|---|---|---|
Функция СЧЁТЗ считает пустые ячейки |
В ячейках есть формулы, возвращающие "" (пустую строку) |
Используйте =СУММПРОИЗВ(--(ДЛСТР(A1:A10)>0)) |
СЧЁТЕСЛИ не находит текст |
Регистр символов или лишние пробелы | Приведите текст к единому регистру: =СЧЁТЕСЛИ(PODST(A1:A10); "да") |
| Формула массива не работает | Забыли нажать Ctrl+Shift+Enter в старых версиях Excel |
Повторите ввод формулы с правильным завершением |
ПРОМЕЖУТОЧНЫЕ.ИТОГИ считает скрытые строки |
Использован код 3 вместо 103 |
Замените код на 103 для игнорирования скрытых строк |
Как проверить ячейку на "истинную пустоту"?
Используйте комбинацию функций ЕПУСТО и ЕСЛИ:
=ЕСЛИ(И(ЕПУСТО(A1); НЕ(ЕСТЬФОРМУЛА(A1))); "Пусто"; "Не пусто")
Функция ЕСТЬФОРМУЛА (ISFORMULA) доступна только в Excel 365 и Excel 2021.
FAQ: Ответы на частые вопросы
Как посчитать заполненные ячейки в нескольких листах?
Используйте трехмерные ссылки. Например, чтобы посчитать непустые ячейки в диапазоне A1:A10 на листах Лист1, Лист2 и Лист3:
=СЧЁТЗ(Лист1:Лист3!A1:A10)
Если имена листов не последовательны, перечислите их вручную:
=СУММ(СЧЁТЗ(Лист1!A1:A10); СЧЁТЗ(Лист2!A1:A10); СЧЁТЗ(Лист5!A1:A10))
Почему СЧЁТЗ считает ячейки с формулой ="" как непустые?
Функция СЧЁТЗ учитывает любые ячейки, содержащие данные или формулы, даже если результат формулы — пустая строка. Чтобы исключить такие случаи:
- Используйте
=СУММПРОИЗВ(--(ДЛСТР(A1:A10)>0))— она проверяет длину строки. - Или комбинацию:
=СЧЁТЗ(A1:A10) - СЧИТАТЬПУСТОТЫ(A1:A10).
Оба метода вернут количество ячеек с видимым содержимым.
Как посчитать заполненные ячейки по цвету?
Стандартных функций для подсчета по цвету в Excel нет, но есть обходные пути:
- 🔹 Фильтр по цвету: Отфильтруйте ячейки по цвету (меню
Данные → Фильтр → Фильтр по цвету), затем используйтеПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; диапазон). - 🔹 VBA: Напишите макрос с использованием свойства
.Interior.Color. - 🔹 Условное форматирование + вспомогательный столбец: Добавляет столбец с формулой, проверяющей цвет (требует VBA).
Пример кода VBA для подсчета ячеек с красным фоном:
Function CountByColor(rng As Range, color As Range) As Long
Dim cl As Range
Dim count As Long
count = 0
For Each cl In rng
If cl.Interior.Color = color.Interior.Color Then
count = count + 1
End If
Next cl
CountByColor = count
End Function
Используйте как: =CountByColor(A1:A100; B1), где B1 — ячейка с образцом цвета.
Можно ли посчитать непустые ячейки в Google Таблицах?
Да, в Google Sheets используются аналогичные функции:
- 🔹
=COUNTA(A1:A10)— аналогСЧЁТЗ. - 🔹
=COUNTIF(A1:A10; "<>""")— аналогСЧЁТЕСЛИдля непустых ячеек. - 🔹
=SUMPRODUCT(--(LEN(A1:A10)>0))— для подсчета ячеек с видимым содержимым.
Отличия от Excel:
- 🔹 В Google Sheets нет функции
ПРОМЕЖУТОЧНЫЕ.ИТОГИ— используйте=SUBTOTAL(3; A1:A10). - 🔹 Функции массива (например,
FILTER) работают безCtrl+Shift+Enter.
Как ускорить подсчет в больших таблицах (более 100 000 строк)?
Для оптимизации производительности:
- Отключите автоматический пересчет: Перейдите в
Формулы → Параметры вычислений → Вручнуюи пересчитывайте данные по кнопкеF9. - Используйте Power Query: Загрузите данные через
Данные → Получение данныхи фильтруйте пустые значения на этапе загрузки. - Разбейте данные на меньшие диапазоны: Например, вместо
СЧЁТЗ(A1:A100000)используйте=СУММ(СЧЁТЗ(A1:A10000); СЧЁТЗ(A10001:A20000); ...). - Превратите формулы в значения: Выделите диапазон с результатами, скопируйте (
Ctrl+C), затемПравая кнопка → Специальная вставка → Значения.
В Excel 365 динамические массивы (например, УНИК или ФИЛЬТР) работают быстрее традиционных формул массива.