Функция СЧЁТЗ в 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)). - 🔹 Данные в ячейках — это объекты (например, вставленные картинки или кнопки), а не текст/числа.
- 🔹 Файл открыт в режиме защищённого просмотра или повреждён.
Проверьте формат ячеек (Общий вместо Текст) и пересохраните файл.