Как посчитать непустые ячейки в Excel: функция СЧЁТЗ и её аналоги

Функция СЧЁТЗ в Microsoft Excel возвращает количество непустых ячеек в указанном диапазоне — но её поведение часто становится источником ошибок. Если вы пытаетесь подсчитать строки с данными, а результат получается неверным, проблема кроется в одном из трёх нюансов: функция игнорирует "" (пустые текстовые значения), учитывает ячейки с формулами (даже если они выводят пустоту) и не различает типы данных. Например, в диапазоне A1:A3 с значениями 5, "" и =ЕСЛИ(1=2;"да";"") СЧЁТЗ вернёт 3, хотя визуально "пустых" ячеек две.

Чтобы избежать ложных результатов, важно понимать, что СЧЁТЗ считает любые ячейки, содержащие данные или формулы — даже если они отображаются как пустые. Это отличает её от функции СЧЁТ (которая учитывает только числа) и от фильтрации по цвету. В 90% случаев ошибки возникают из-за скрытых символов (пробелов, неразрывных пробелов CHAR(160)) или формул, возвращающих пустую строку. Проверьте проблемные ячейки с помощью ДЛСТР или ПЕЧСИМВ — это поможет выявить "невидимые" данные.

В этой статье разберём не только базовый синтаксис СЧЁТЗ, но и альтернативные методы подсчёта (включая СЧИТАТЬПУСТОТЫ, массивы и условное форматирование), а также типичные сценарии, где стандартная функция даёт сбой. Например, при работе с данными, импортированными из CSV, или при динамическом подсчёте заполненных строк в отчётах. Если вам нужно посчитать только ячейки с реальным содержимым (исключая формулы и пробелы), обратите внимание на комбинацию СЧЁТЗ с ЕНД или ДЛСТР — эти приёмы описаны в разделе про продвинутые техники.

Синтаксис функции СЧЁТЗ: аргументы и базовые примеры

Функция СЧЁТЗ (англ. COUNTA) имеет простейший синтаксис:

=СЧЁТЗ(значение1; [значение2]; ...)

Где значение1 — обязательный аргумент (диапазон, массив или отдельная ячейка), а [значение2] — необязательные дополнительные диапазоны (до 255 аргументов). Функция возвращает количество ячеек, которые не пусты в традиционном понимании Excel: содержат числа, текст, логические значения (ИСТИНА/ЛОЖЬ), ошибки (#ДЕЛ/0!), даты или формулы (даже если те выводят пустую строку).

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

  • 📌 =СЧЁТЗ(A1:A10) — подсчёт непустых ячеек в диапазоне A1:A10.
  • 📌 =СЧЁТЗ(B2:B100; D2:D100) — подсчёт в двух несмежных столбцах.
  • 📌 =СЧЁТЗ({"а";"";0;ИСТИНА;#Н/Д}) — результат 5, так как все элементы массива считаются непустыми.

Ключевая особенность: СЧЁТЗ учитывает ячейки с формулами, возвращающими пустую строку (=""), но не учитывает ячейки, где формула ещё не рассчитана (например, в массивах с #ЗНАЧ!). Это важно при работе с динамическими таблицами, где данные подгружаются по мере ввода. Чтобы проверить, содержит ли ячейка формулу, используйте ЕФОРМУЛА (в новых версиях Excel) или комбинацию ЕТЕКСТ(ФОРМУЛТЕКСТ(...)).

📊 Как часто вы используете СЧЁТЗ в работе?
Ежедневно
Несколько раз в неделю
Редее чем раз в месяц
Никогда не пользовался

Чем СЧЁТЗ отличается от СЧЁТ, СЧИТАТЬПУСТОТЫ и СЧЁТЕСЛИ

Выбор функции для подсчёта ячеек зависит от задачи. Вот ключевые различия:

ФункцияЧто считаетПример результата для {5;"";ИСТИНА;#Н/Д;""}
СЧЁТЗВсе непустые ячейки (включая текст, ошибки, формулы)5
СЧЁТТолько ячейки с числами, датами, временем1
СЧИТАТЬПУСТОТЫТолько полностью пустые ячейки (без формул и символов)0
СЧЁТЕСЛИЯчейки, соответствующие условию (например, >0)Зависит от условия

Частая ошибка — использовать СЧЁТ вместо СЧЁТЗ, когда нужно посчитать строки с текстом или смешанными данными. Например, для подсчёта заполненных анкет, где ответы могут быть как числовыми (1, 2), так и текстовыми ("Да", "Нет"), СЧЁТ даст неверный результат. Аналогично, СЧИТАТЬПУСТОТЫ не поможет, если в "пустых" ячейках есть пробелы или невидимые символы.

Для условного подсчёта (например, только ячеек с текстом длиной > 3 символов) комбинируйте СЧЁТЗ с другими функциями:

=СУММПРОИЗВ(--(ДЛСТР(A1:A10)>3))

Эта формула массива вернёт количество ячеек в A1:A10, где текст длиннее 3 символов. Аналогичный подход работает для проверки на ошибки (ЕОШИБКА), логические значения (ЕЛОГИЧ) или конкретные текстовые шаблоны (НАЙТИ).

Типичные ошибки при использовании СЧЁТЗ и как их исправить

Даже опытные пользователи сталкиваются с неожиданными результатами СЧЁТЗ. Вот самые распространённые причины и способы их устранения:

⚠️ Внимание: Если СЧЁТЗ возвращает значение больше, чем визуально непустых ячеек, проверьте диапазон на наличие:
  • 🔹 Формул, возвращающих пустую строку (="" или =ЕСЛИ(условие;"";"")).
  • 🔹 Неразрывных пробелов (CHAR(160)) — их не видно, но СЧЁТЗ учитывает.
  • 🔹 Логических значений (ИСТИНА/ЛОЖЬ) или ошибок (#Н/Д, #ЗНАЧ!).

Используйте ПЕЧСИМВ или КОДСИМВ для диагностики.

Ошибка 1: Формулы, возвращающие пустоту. Например, в ячейке A1 формула =ЕСЛИ(B1=0;"";B1/10). Визуально A1 пуста, но СЧЁТЗ посчитает её как непустую. Решение:

  • 🔧 Замените ="" на =НД() (функция НД возвращает ошибку #Н/Д, которую можно игнорировать с помощью ЕОШИБКА).
  • 🔧 Используйте =СЧЁТЕСЛИМНЖ(диапазон; "<>") для подсчёта только ячеек с реальным содержимым.

Ошибка 2: Скрытые символы. Ячейка может содержать пробел, табуляцию или непечатаемый символ (например, CHAR(9) — табуляция). Чтобы их обнаружить:

=ДЛСТР(ПОДСТАВИТЬ(A1;CHAR(32);"")) <> 0

Если формула возвращает ИСТИНА, в ячейке есть скрытые символы. Для очистки используйте СЖПРОБЕЛЫ или ПОДСТАВИТЬ.

1. Проверьте диапазон на формулы с помощью ЕФОРМУЛА (Excel 365) или ФОРМУЛТЕКСТ

2. Используйте ПЕЧСИМВ(A1) для вывода непечатаемых символов

3. Примените условное форматирование по формуле =ДЛСТР(A1)=0 для выделения "пустых" ячеек

4. Проверьте настройки импорта данных (особенно при работе с CSV или TXT)

-->

Продвинутые техники: комбинации с другими функциями

Для сложных задач СЧЁТЗ часто комбинируют с другими функциями. Рассмотрим наиболее полезные сценарии:

1. Подсчёт ячеек с текстом (исключая числа и ошибки):

=СУММПРОИЗВ(--(ЕТЕКСТ(A1:A10));--(ДЛСТР(A1:A10)>0))

Эта формула массива вернёт количество ячеек, содержащих только текст (исключая числа, даты, логические значения и ошибки). Для Excel 365 можно использовать более простой вариант:

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

2. Подсчёт непустых ячеек в динамическом диапазоне. Если данные добавляются автоматически (например, в таблице Excel), используйте:

=СЧЁТЗ(Таблица1[Столбец1])

Где Таблица1[Столбец1] — structured reference (ссылка на столбец в умной таблице). Преимущество: диапазон будет автоматически расширяться при добавлении новых строк.

3. Игнорирование ячеек с конкретными значениями. Например, чтобы посчитать непустые ячейки, исключая "Н/Д":

=СЧЁТЗ(A1:A10) - СЧЁТЕСЛИ(A1:A10; "Н/Д")

Для нескольких исключений используйте СЧЁТЕСЛИМН:

=СЧЁТЗ(A1:A10) - СЧЁТЕСЛИМН(A1:A10; {"Н/Д";"Пусто";""})
Как посчитать непустые ячейки в фильтрованном диапазоне?

Используйте функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ с параметром 3 (для СЧЁТЗ):

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

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

Альтернативные методы подсчёта непустых ячеек

Если СЧЁТЗ не подходит для вашей задачи, рассмотрите эти альтернативы:

1. Условное форматирование + функция СТРОКА. Для визуального контроля:

  • 🎨 Выделите диапазон (например, A1:A100).
  • 🎨 Создайте правило условного форматирования с формулой =ДЛСТР(A1)>0.
  • 🎨 Настройте заливку ячеек (например, светло-зелёный цвет).

Теперь непустые ячейки будут выделены, а их количество можно посчитать вручную или с помощью СЧЁТЗ по цвету (макросом).

2. Power Query (Get & Transform). Если данные импортируются из внешних источников:

  • 📥 Загрузите данные в Power Query (Данные → Получить данные).
  • 📥 Добавьте пользовательский столбец с формулой = if [Column1] = null then 0 else 1.
  • 📥 Сгруппируйте данные по этому столбцу с операцией Sum.

Этот метод полезен для больших наборов данных (100K+ строк), где формулы Excel работают медленно.

3. VBA-макрос для точного подсчёта. Если нужна максимальная гибкость (например, игнорировать ячейки с формулами), используйте этот код:

Function CountNonEmpty(rng As Range) As Long

Dim cell As Range

For Each cell In rng

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

CountNonEmpty = CountNonEmpty + 1

End If

Next cell

End Function

Вставьте код в модуль VBA (Alt+F11 → Вставка → Модуль) и используйте в Excel как =CountNonEmpty(A1:A10). Этот макрос учитывает только ячейки с реальными данными, игнорируя формулы, возвращающие пустоту.

Примеры использования СЧЁТЗ в реальных задачах

Сценарий 1: Подсчёт заполненных анкет. Предположим, у вас таблица с ответами на 10 вопросов (столбцы B:K), и нужно посчитать, сколько респондентов заполнили все поля. Формула:

=СЧЁТЕСЛИМНЖ(B2:K100; "<>")

Эта формула вернёт количество строк, где все ячейки в диапазоне B2:K100 непустые. Для подсчёта частично заполненных анкет (хотя бы 1 ответ) используйте:

=СЧЁТЗ(B2:K100)/10

Сценарий 2: Контроль заполнения базы данных. Если у вас список клиентов с полями Имя, Телефон и Email, и нужно выявить строки с пропущенными данными:

=ЕСЛИ(СЧЁТЗ(A2:C2)<3; "Есть пропуски"; "OK")

Протяните формулу вниз и отфильтруйте по значению "Есть пропуски", чтобы быстро найти неполные записи.

Сценарий 3: Анализ продаж по регионам. Допустим, у вас таблица с продажами, где некоторые регионы не имеют данных за определённые месяцы. Чтобы посчитать количество регионов с ненулевыми продажами в январе:

=СЧЁТЕСЛИМНЖ(B2:B100; "<>"; C2:C100; "<>0")

Где B2:B100 — столбец с названиями регионов, а C2:C100 — продажи в январе.

Оптимизация производительности при работе с большими диапазонами

Функция СЧЁТЗ может замедлять работу Excel при обработке десятков тысяч строк. Вот как оптимизировать её использование:

1. Сужайте диапазоны. Вместо =СЧЁТЗ(A:A) (весь столбец) используйте =СЧЁТЗ(A1:A10000) или привязывайтесь к последней заполненной строке:

=СЧЁТЗ(A1:INDEX(A:A;ПОИСКПОЗ("";A:A;-1)))

2. Заменяйте формулы на значения. Если данные статичные, преобразуйте формулы в значения (Копировать → Специальная вставка → Значения). Это ускорит пересчёт.

3. Используйте Power Pivot или Power Query. Для анализа данных объёмом >100K строк:

  • 📊 Загрузите данные в модель Power Pivot.
  • 📊 Создайте меру с функцией COUNTA (аналог СЧЁТЗ в DAX).
  • 📊 Постройте сводную таблицу на основе этой меры.
⚠️ Внимание: В Excel 2019 и старше функция СЧЁТЗ поддерживает динамические массивы, но их использование в больших диапазонах может привести к переполнению памяти. Если файл "подвисает", проверьте наличие циклических ссылок или массивов с миллионами ячеек. Используйте Формулы → Зависимости формул → Влияющие ячейки для диагностики.

Часто задаваемые вопросы

Почему СЧЁТЗ считает пустую ячейку как непустую?

Скорее всего, в ячейке есть один из "невидимых" элементов:

  • 🔹 Формула, возвращающая пустую строку (="").
  • 🔹 Пробел или неразрывный пробел (CHAR(32) или CHAR(160)).
  • 🔹 Логическое значение (ИСТИНА/ЛОЖЬ) или ошибка (#Н/Д).

Проверьте ячейку с помощью =ЕПУСТО(A1) (вернёт ЛОЖЬ, если ячейка непуста) или =ДЛСТР(A1) (вернёт 0 только для действительно пустых ячеек).

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

Используйте функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ с параметром 3:

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; A2:A100)

Эта функция учитывает только видимые (нескрытые) строки после применения фильтра. Альтернатива — сводная таблица с настройкой "Показать данные на основе фильтра".

Можно ли с помощью СЧЁТЗ посчитать ячейки с конкретным цветом?

Нет, СЧЁТЗ не анализирует форматирование. Для подсчёта по цвету нужна одна из альтернатив:

  • 🔹 VBA-макрос с циклом по ячейкам и проверкой .Interior.Color.
  • 🔹 Функция ПОЛУЧИТЬ.ЯЧЕЙКУ (только для цветов, применённых условным форматированием).
  • 🔹 Надстройка Kutools for Excel (платная).

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

Function CountRedCells(rng As Range) As Long

Dim cell As Range, redCount As Long

redCount = 0

For Each cell In rng

If cell.Interior.Color = RGB(255, 0, 0) Then redCount = redCount + 1

Next cell

CountRedCells = redCount

End Function

Как посчитать непустые ячейки в Google Sheets?

В Google Таблицах функция называется COUNTIF, но для подсчёта непустых ячеек используйте COUNTA (аналог СЧЁТЗ):

=COUNTA(A1:A10)

Синтаксис и поведение идентичны Excel, за исключением:

  • 🔹 В Google Sheets COUNTA не учитывает ячейки с формулами, возвращающими пустую строку (в отличие от Excel).
  • 🔹 Для динамических массивов используйте =BYROW или =MAP.

Почему СЧЁТЗ возвращает 0 для диапазона с данными?

Вероятные причины:

  • 🔹 Диапазон указан как текст (например, =СЧЁТЗ("A1:A10") вместо =СЧЁТЗ(A1:A10)).
  • 🔹 Данные в ячейках — это объекты (например, вставленные картинки или кнопки), а не текст/числа.
  • 🔹 Файл открыт в режиме защищённого просмотра или повреждён.

Проверьте формат ячеек (Общий вместо Текст) и пересохраните файл.