При попытке подсчитать количество записей в диапазоне Microsoft Excel часто включает в расчёт пустые ячейки — даже если они визуально выглядят незаполненными. Это происходит из-за «невидимых» символов (пробелов, неразрывных пробелов, нулевых значений после форматирования) или ошибок в формулах типа =СЧЁТ(), которая учитывает все ячейки с числовыми данными, включая нули. Чтобы получить точный результат, нужно использовать специализированные функции или комбинации фильтров, которые игнорируют истинно пустые клетки и ячейки с «мусорными» данными.
Проблема усугубляется, если данные импортированы из внешних источников (например, CSV или баз данных), где пустые поля могут быть представлены как строки с пробелами или символами табуляции. В таких случаях стандартные функции вроде =СЧЁТЗ() (подсчёт непустых ячеек) дают ложный результат. Решение зависит от типа данных: для текста, чисел и дат требуются разные подходы, а в современных версиях Excel 365 появились новые динамические функции, упрощающие задачу.
Почему Excel считает пустые ячейки и как это проверить
Основная причина ошибок — несоответствие между визуальным представлением ячейки и её реальным содержимым. Например, после очистки данных через Удалить → Очистить содержимое в ячейке могут оставаться:
- 🔹 Неразрывные пробелы (
CHAR(160)) — невидимые символы, которые Excel воспринимает как текст. - 🔹 Символы табуляции или перевода строки (
CHAR(9),CHAR(10)). - 🔹 Формулы, возвращающие пустую строку (например,
=ЕСЛИ(A1=0;"";"")). - 🔹 Нули после числового форматирования (например, ячейка с значением
0, отформатированная как текст).
Чтобы выявить скрытые символы, используйте функцию =ДЛСТР(ТРИМ(A1)). Если результат больше 0, ячейка содержит невидимые данные. Для массовой проверки:
- Выделите диапазон и нажмите
Ctrl + H(замена). - В поле «Найти» введите пробел, в поле «Заменить на» оставьте пустым.
- Нажмите «Заменить все» и проверьте, изменилось ли количество «пустых» ячеек.
Метод 1: Функция СЧЁТЗ для подсчёта непустых ячеек
Самый простой способ — использовать функцию =СЧЁТЗ() (COUNTA в английской версии). Она подсчитывает все ячейки, содержащие любые данные, включая текст, числа, логические значения (ИСТИНА/ЛОЖЬ) и ошибки (#ДЕЛ/0!, #ЗНАЧ!). Синтаксис:
=СЧЁТЗ(диапазон)
Пример: =СЧЁТЗ(A2:A100)
Однако СЧЁТЗ не различает «полезные» данные и мусорные символы. Если в диапазоне есть ячейки с одним пробелом, они тоже будут учтены. Чтобы исключить такие случаи, комбинируйте СЧЁТЗ с ЕСЛИ:
=СЧЁТЗ(ЕСЛИ(ТРИМ(A2:A100)<>"";A2:A100;""))
Внимание: это формула массива — вводите её с Ctrl+Shift+Enter в Excel 2019 и старше.
Как ввести формулу массива в новых версиях Excel
В Excel 365 и 2021 формулы массива вводятся автоматически — просто нажмите Enter. В версиях 2010–2019 после ввода формулы нажмите Ctrl+Shift+Enter. Признак успешного ввода — фигурные скобки {}, которые Excel добавляет сам (их не нужно вводить вручную).
Метод 2: Функция СЧИТАТЬПУСТОТЫ для обратного подсчёта
Если нужно посчитать только заполненные ячейки в диапазоне, где часть клеток действительно пуста (без скрытых символов), используйте комбинацию СЧИТАТЬПУСТОТЫ (COUNTBLANK) и СЧЁТ:
=СЧЁТ(диапазон) - СЧИТАТЬПУСТОТЫ(диапазон)
Пример: =СЧЁТ(A2:A100) - СЧИТАТЬПУСТОТЫ(A2:A100)
Этот метод работает только для чисел и не учитывает текстовые данные. Для универсального подсчёта (числа + текст) комбинируйте с СЧЁТЗ:
=СЧЁТЗ(диапазон) - СЧИТАТЬПУСТОТЫ(диапазон)
⚠️ Внимание: Функция СЧИТАТЬПУСТОТЫ воспринимает как пустые только ячейки, которые никогда не редактировались. Если в клетке был текст, а потом он был удалён, функция может вернуть некорректный результат.
Метод 3: Фильтрация данных перед подсчётом
Если диапазон содержит смешанные данные (текст, числа, ошибки), самый надёжный способ — отфильтровать непустые ячейки и подсчитать видимые строки. Алгоритм:
- Выделите диапазон (например,
A2:A100). - На вкладке
ДанныенажмитеФильтр. - Раскройте стрелку фильтра в заголовке столбца и снимите галочку с
(Пустые). - Количество видимых строк после фильтрации — это количество непустых ячеек.
Для автоматизации процесса используйте функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; диапазон)
Где 3 — код операции для подсчёта непустых ячеек.
✅ Удалите лишние пробелы через ТРИМ
✅ Замените неразрывные пробелы (CHAR(160)) на обычные
✅ Преобразуйте формулы в значения (Копировать → Специальная вставка → Значения)
✅ Проверьте формат ячеек (текст/число/дата)-->
Метод 4: Продвинутые формулы для сложных случаев
Если в данных есть формулы, возвращающие пустую строку (например, =ЕСЛИ(A1=0;"";"Значение")), стандартные функции их пропустят. Чтобы учесть такие ячейки, используйте:
=СУММПРОИЗВ(--(ДЛСТР(A2:A100)>0))
Формула массива — вводите с Ctrl+Shift+Enter в Excel 2019 и старше.
Для подсчёта только чисел (исключая текст и ошибки):
=СУММ(--(ЕЧИСЛО(A2:A100)))
В Excel 365 и 2021 доступны динамические функции, упрощающие задачу:
=ФИЛЬТР(A2:A100; A2:A100<>"") // Возвращает массив непустых значений
=СЧЁТ(ФИЛЬТР(A2:A100; A2:A100<>"")) // Подсчитывает их количество
| Тип данных | Формула для подсчёта | Примечания |
|---|---|---|
| Любые непустые ячейки | =СЧЁТЗ(A2:A100) | Учитывает текст, числа, ошибки |
| Только числа (вкл. нули) | =СЧЁТ(A2:A100) | Игнорирует текст и пустые ячейки |
| Только ненулевые числа | =СЧЁТЕСЛИ(A2:A100;">0") + СЧЁТЕСЛИ(A2:A100;"<0") | Исключает нули и текст |
| Текстовые значения | =СУММПРОИЗВ(--(ЕТЕКСТ(A2:A100))) | Требует ввода как формула массива |
| Ячейки с формулами | =СУММПРОИЗВ(--(ФОРМУЛТЕКСТ(A2:A100)<>"")) | Работает только в Excel 365 |
Метод 5: Power Query для очистки и подсчёта
Если данные импортированы из внешних источников и содержат много «мусорных» символов, используйте Power Query (Данные → Получить данные):
- Загрузите данные в Power Query (
Из таблицы/диапазона). - Выделите столбец и выберите
Преобразовать → Очистить → Очистить текст(удалит пробелы). - Добавьте пользовательский столбец с формулой
= if [Column1] = null or [Column1] = "" then null else 1. - Подсчитайте количество единиц в новом столбце.
Преимущество метода — гибкость: можно настроить фильтрацию по регулярным выражениям, заменить конкретные символы или исключить ячейки с ошибками. Например, чтобы удалить все непечатаемые символы:
= Text.Clean([Column1]) // Удаляет непечатаемые символы
= Text.Trim([Column1]) // Удаляет пробелы в начале/конце
Функция СЧЁТЗ|Фильтрация данных|Формулы массива|Power Query|Другой способ-->
Типичные ошибки и как их избежать
Ошибка 1: Игнорирование формата ячеек. Если ячейка отформатирована как текст, но содержит число, функции вроде СЧЁТ её пропустят. Решение — преобразовать формат через Текст по столбцам или функцию =ЗНАЧЕН().
Ошибка 2: Подсчёт ячеек с формулами, возвращающими пустую строку. Например, =ЕСЛИ(A1=0;"";"Значение") визуально выглядит пустой, но СЧЁТЗ её учитывает. Используйте =СУММПРОИЗВ(--(ДЛСТР(ФОРМУЛТЕКСТ(A2:A100))>0)) (только в Excel 365).
⚠️ Внимание: В диапазонах с объединёнными ячейками функции подсчёта работают непредсказуемо. Предварительно разъедините ячейки (Главная → Объединить и центрировать) или используйте VBA-скрипт для корректного подсчёта.
Ошибка 3: Неучёт скрытых строк. Если в таблице применён фильтр или скрыты строки вручную, СЧЁТЗ подсчитает все ячейки, включая скрытые. Чтобы учитывать только видимые:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; диапазон)
FAQ: Частые вопросы по подсчёту заполненных ячеек
Как посчитать только ячейки с текстом, игнорируя числа?
Используйте формулу массива:
=СУММ(--(ЕТЕКСТ(A2:A100)))
В Excel 365 можно упростить:
=СЧЁТЕСЛИ(A2:A100; "*") - СЧЁТЕСЛИ(A2:A100; "??????????") // Учитывает текст длиной > 10 символов
Почему СЧЁТЗ считает пустые ячейки после импорта из CSV?
В CSV-файлах пустые поля часто представлены как "" (две кавычки), которые Excel воспринимает как текст. Решение:
- Замените
""на пустую строку черезНайти и заменить. - Используйте
=СЧЁТЗ(ЕСЛИ(A2:A100<>""";A2:A100;""))(формула массива).
Как подсчитать заполненные ячейки в фильтрованном диапазоне?
Примените ПРОМЕЖУТОЧНЫЕ.ИТОГИ:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; A2:A100)
Аргумент 3 означает подсчёт непустых ячеек в видимом диапазоне. Другие коды:
2— количество чисел101— сумма видимых чисел
Можно ли посчитать цветные ячейки?
Стандартными функциями — нет. Используйте VBA или надстройку Power Query:
- Откройте редактор VBA (
Alt + F11). - Вставьте код:
Function CountColoredCells(rng As Range, color As Range) As Long
Dim cl As Range, cnt As Long
For Each cl In rng
If cl.Interior.Color = color.Interior.Color Then cnt = cnt + 1
Next cl
CountColoredCells = cnt
End Function
Вызовите функцию в ячейке: =CountColoredCells(A2:A100; B1), где B1 — ячейка с образцом цвета.
Как посчитать уникальные непустые значения?
В Excel 365:
=СЧЁТ(УНИК(A2:A100))
В старых версиях:
=СУММ(1/СЧЁТЕСЛИ(A2:A100; A2:A100 & "")) // Формула массива (Ctrl+Shift+Enter)