Работа с данными в Microsoft Excel часто требует анализа только тех ячеек, которые содержат реальную информацию. Пустые клетки могут искажать результаты расчётов, статистику или отчёты. Например, при подсчёте продаж за месяц важно учитывать только те дни, когда были реальные транзакции, а не все календарные даты. Или при анализе опроса — только ответы респондентов, а не пропущенные вопросы.
Многие пользователи ошибочно используют стандартную функцию СЧЁТ (COUNT), которая учитывает только числовые значения, игнорируя текст, даты и логические значения. Другие пытаются вручную выделять диапазоны, что занимает время и чревато ошибками. На самом деле в Excel есть минимум 7 способов точно посчитать заполненные ячейки — от простых функций до продвинутых комбинаций с условиями.
Эта статья поможет разобраться, какой метод подходит для вашей задачи: нужно ли учитывать текст, игнорировать ошибки, работать с динамическими диапазонами или автоматизировать процесс через Power Query. Мы рассмотрим примеры для разных версий Excel (включая Excel 365 и Excel 2019), а также типичные ошибки, которые портят результаты.
1. Функция СЧЁТЗ: универсальный инструмент для подсчёта непустых ячеек
Функция СЧЁТЗ (COUNTA в английской версии) — самый простой и эффективный способ посчитать количество заполненных ячеек в диапазоне. Она учитывает любые данные: числа, текст, даты, логические значения (ИСТИНА/ЛОЖЬ), а также ячейки с формулами, возвращающими результат (даже если это пустая строка ""). Единственное исключение — ячейки, которые действительно пусты или содержат формулы, возвращающие "" без пробелов.
Синтаксис функции:
=СЧЁТЗ(значение1; [значение2]; ...)
Где значение1 — обязательный аргумент (диапазон или отдельная ячейка), а [значение2] — дополнительные диапазоны (до 255 аргументов).
Пример: Подсчитаем количество заполненных ячеек в столбце A с A1 по A20:
=СЧЁТЗ(A1:A20)
Функция вернёт количество ячеек, содержащих хоть какие-то данные. Если в диапазоне есть формулы типа =ЕСЛИ(B1>10; "Да"; ""), то ячейки с пустым результатом ("") будут учитываться как заполненные — это важный нюанс!
⚠️ Внимание: Функция СЧЁТЗ не различает типы данных. Если вам нужно посчитать только числа или только текст, используйте другие методы (см. раздел 3).
- ✅ Подходит для: быстрого подсчёта всех непустых ячеек в диапазоне.
- ✅ Учитывает: текст, числа, даты, ошибки (
#ДЕЛ/0!), логические значения. - ❌ Не подходит для: игнорирования ячеек с формулами, возвращающими
"". - ❌ Не различает: типы данных (всё считает одинаково).
2. Подсчёт заполненных ячеек с условиями: СЧЁТЕСЛИ и СЧЁТЕСЛИМН
Если нужно посчитать не просто заполненные ячейки, а те, что соответствуют определённым критериям, на помощь приходят функции СЧЁТЕСЛИ (COUNTIF) и СЧЁТЕСЛИМН (COUNTIFS). Они позволяют учитывать только ячейки с конкретными значениями, текстом, числами в заданном диапазоне и т.д.
Синтаксис СЧЁТЕСЛИ:
=СЧЁТЕСЛИ(диапазон; критерий)
Где критерий может быть:
- 🔢 Числом:
=СЧЁТЕСЛИ(A1:A10; ">100")— посчитает ячейки со значениями больше 100. - 📝 Текстом:
=СЧЁТЕСЛИ(B1:B20; "Да")— посчитает ячейки с точным совпадением "Да". - 📅 Датой:
=СЧЁТЕСЛИ(C1:C15; ">31.12.2023")— посчитает даты после 31 декабря 2023 года. - 🔄 Условием:
=СЧЁТЕСЛИ(D1:D10; "<>"") — посчитает все непустые ячейки (альтернативаСЧЁТЗ).
Пример: Подсчитаем количество ячеек в столбце B, содержащих слово "Успешно":
=СЧЁТЕСЛИ(B2:B50; "Успешно")
Для нескольких условий используйте СЧЁТЕСЛИМН. Например, посчитаем ячейки в столбце A, где значения больше 50, и соответствующие ячейки в столбце B содержат "Да":
=СЧЁТЕСЛИМН(A2:A50; ">50"; B2:B50; "Да")
⚠️ Внимание: Критерий"<>""вСЧЁТЕСЛИучитывает ячейки с формулами, возвращающими пустую строку (""), в отличие отСЧЁТЗ, которая их игнорирует. Это может давать разные результаты!
| Функция | Синтаксис | Пример | Что считает |
|---|---|---|---|
СЧЁТЕСЛИ |
=СЧЁТЕСЛИ(диапазон; критерий) |
=СЧЁТЕСЛИ(A1:A10; "<>"" |
Все непустые ячейки (включая "" от формул) |
СЧЁТЕСЛИМН |
=СЧЁТЕСЛИМН(диапазон1; критерий1; ...) |
=СЧЁТЕСЛИМН(A1:A10; ">0"; B1:B10; "Да") |
Ячейки, соответствующие нескольким условиям |
СЧЁТЗ |
=СЧЁТЗ(значение1; ...) |
=СЧЁТЗ(A1:A10) |
Все непустые ячейки (исключая "" от формул) |
3. Как посчитать только числовые или текстовые ячейки
Иногда требуется учитывать только определённый тип данных. Например, посчитать количество чисел в столбце, игнорируя текст, или наоборот — посчитать текстовые записи, исключая числа и даты. Для этого есть несколько подходов.
Подсчёт только чисел
Используйте функцию СЧЁТ (COUNT), которая учитывает только числовые значения, даты и логические значения (ИСТИНА/ЛОЖЬ):
=СЧЁТ(A1:A20)
Если нужно исключить логические значения, используйте комбинацию с СУММПРОИЗВ:
=СУММПРОИЗВ(--(ЕЧИСЛО(A1:A20)))
Формула массива (вводится через Ctrl+Shift+Enter в старых версиях Excel).
Подсчёт только текста
Для подсчёта текстовых ячеек используйте СЧЁТЕСЛИ с критерием, проверяющим тип данных. Например, чтобы посчитать все текстовые ячейки в диапазоне A1:A20:
=СУММПРОИЗВ(--(ЕТЕКСТ(A1:A20)))
Или более простой вариант (но менее точный):
=СЧЁТЕСЛИ(A1:A20; "*") - СЧЁТ(A1:A20)
Эта формула вычитает из общего количества непустых ячеек (СЧЁТЕСЛИ(A1:A20; "*")) количество числовых значений (СЧЁТ(A1:A20)).
Убедитесь, что в диапазоне нет чисел в текстовом формате (например, "123" вместо 123)
Исключите ячейки с формулами, возвращающими текст (например, =ЕСЛИ(A1>0; "Да"; ""))
Проверьте наличие скрытых символов (пробелов, табуляций) в "пустых" ячейках-->
4. Подсчёт заполненных ячеек с игнорированием ошибок
Если в диапазоне есть ячейки с ошибками (#ДЕЛ/0!, #Н/Д, #ЗНАЧ! и др.), функции СЧЁТЗ и СЧЁТЕСЛИ будут учитывать их как заполненные. Чтобы исключить ошибки из подсчёта, используйте комбинацию функций ЕОШИБКА и СУММПРОИЗВ:
=СУММПРОИЗВ(--(НЕ(ЕОШИБКА(A1:A20))); --(A1:A20<>""))
Эта формула массива проверяет две условия:
- Ячейка не содержит ошибку (
НЕ(ЕОШИБКА(...))). - Ячейка не пустая (
A1:A20<>"").
Для Excel 365 и Excel 2021 можно использовать более лаконичную формулу с ФИЛЬТР:
=СЧЁТЗ(ФИЛЬТР(A1:A20; (A1:A20<>"")*(НЕ(ЕОШИБКА(A1:A20)))))
Пример: В столбце C содержатся результаты деления, некоторые из которых дают ошибку #ДЕЛ/0!. Чтобы посчитать только корректные (непустые и без ошибок) значения:
=СУММПРОИЗВ(--(НЕ(ЕОШИБКА(C1:C50))); --(C1:C50<>""); --(ЕЧИСЛО(C1:C50)))
⚠️ Внимание: Формулы массива в старых версиях Excel (до 2019) требуют подтверждения клавишами Ctrl+Shift+Enter. В Excel 365 они работают как обычные формулы.
5. Подсчёт заполненных ячеек в отфильтрованном диапазоне
При работе с фильтрами или таблицами Excel стандартные функции (СЧЁТЗ, СЧЁТЕСЛИ) учитывают все ячейки диапазона, включая скрытые. Чтобы посчитать только видимые (отфильтрованные) ячейки, используйте функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ (SUBTOTAL).
Синтаксис:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(номер_функции; ссылка)
Для подсчёта непустых ячеек используйте номер_функции = 3 (для СЧЁТЗ) или 2 (для СЧЁТ).
Пример: Подсчитаем количество видимых (не скрытых фильтром) ячеек в столбце D:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; D2:D100)
Если нужно посчитать только числовые значения среди видимых ячеек:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(2; D2:D100)
- 🔍
ПРОМЕЖУТОЧНЫЕ.ИТОГИ(1; ...)— среднее видимых ячеек. - 📊
ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9; ...)— сумма видимых ячеек. - ❌
ПРОМЕЖУТОЧНЫЕ.ИТОГИигнорирует ячейки, скрытые вручную (через "Скрыть строки"), но учитывает ячейки, скрытые фильтром.
Для динамических таблиц (Таблица Excel) можно использовать строку итогов:
- Выделите любую ячейку в таблице.
- Перейдите на вкладку
Конструктор→ поставьте галочкуСтрока итогов. - В ячейке итога выберите функцию
Количество(дляСЧЁТ) илиКоличество непустых(дляСЧЁТЗ).
Почему ПРОМЕЖУТОЧНЫЕ.ИТОГИ игнорирует ручное скрытие строк?
Функция ПРОМЕЖУТОЧНЫЕ.ИТОГИ разработана для работы с автофильтрами и структурированными отчётами. Она намеренно игнорирует строки, скрытые вручную (через контекстное меню "Скрыть"), чтобы не искажать результаты при анализе данных. Если нужно учитывать и такие строки, используйте комбинацию СЧЁТЗ с проверкой видимости через VBA.
6. Автоматизация подсчёта через Power Query
Для больших наборов данных или регулярных отчётов удобно использовать Power Query (Get & Transform в Excel 2016+). Этот инструмент позволяет очищать данные, фильтровать пустые ячейки и подсчитывать заполненные значения без формул.
Пошаговая инструкция:
- Выделите диапазон данных или всю таблицу.
- Перейдите на вкладку
Данные→Из таблицы/диапазона(в Excel 2016-2019) илиПолучить данные → Из таблицы/диапазона(в Excel 365). - В открывшемся окне Power Query выделите столбец, в котором нужно посчитать заполненные ячейки.
- Нажмите
Преобразовать→Заменить значения. В полеЗначение для поискаоставьте пустым, вЗаменить навведитеNULL. - Выделите столбец →
Добавить столбец→Пользовательский столбец. Введите формулу:
= if [Column1] <> null then 1 else 0
Где [Column1] — название вашего столбца.
- Нажмите
Закрыть и загрузить. В Excel появится новая таблица с дополнительным столбцом, где1— заполненная ячейка,0— пустая. - Используйте
СУММдля подсчёта единиц в новом столбце.
Преимущества метода:
- 🔄 Автоматическое обновление при изменении исходных данных.
- 🧹 Возможность предварительной очистки данных (удаление пробелов, исправление ошибок).
- 📊 Интеграция с Power Pivot для сложного анализа.
⚠️ Внимание: Power Query воспринимает пустые ячейки и ячейки с формулами, возвращающими"", какnull. Если вам нужно различать эти случаи, добавьте промежуточный столбец с проверкой= if [Column1] = "" then "EmptyString" else if [Column1] = null then "Null" else "Filled".
7. Подсчёт заполненных ячеек с помощью VBA
Если стандартные функции не справляются с задачей (например, нужно посчитать ячейки с определённым форматированием или учитывать скрытые строки), поможет VBA. Ниже приведён код для подсчёта непустых ячеек в выделенном диапазоне, включая ячейки с формулами, возвращающими "":
Function CountNonEmptyCells(rng As Range) As Long
Dim cell As Range
Dim count As Long
count = 0
For Each cell In rng
If Not IsEmpty(cell) And cell.Value <> "" Then
count = count + 1
End If
Next cell
CountNonEmptyCells = count
End Function
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в модуль (
Insert → Module). - Вернитесь в Excel и используйте функцию как обычно:
=CountNonEmptyCells(A1:A20)
Для подсчёта ячеек с конкретным форматированием (например, закрашенных в красный цвет) модифицируйте код:
Function CountColoredCells(rng As Range, color As Long) As Long
Dim cell As Range
Dim count As Long
count = 0
For Each cell In rng
If cell.Interior.Color = color And cell.Value <> "" Then
count = count + 1
End If
Next cell
CountColoredCells = count
End Function
Чтобы получить код цвета, запишите макрос при выделении ячейки нужного цвета.
Когда использовать VBA:
- 🎨 Для подсчёта ячеек с определённым форматированием.
- 🔍 Для анализа скрытых строк или листов.
- ⚡ Для обработки очень больших диапазонов (быстрее, чем формулы массива).
Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при подсчёте заполненных ячеек. Вот самые распространённые из них и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
СЧЁТЗ даёт меньшее значение, чем СЧЁТЕСЛИ(диапазон; "<>"") |
В диапазоне есть формулы, возвращающие "" (пустую строку). СЧЁТЗ их игнорирует, а СЧЁТЕСЛИ — нет. |
Используйте =СУММПРОИЗВ(--(A1:A20<>"")) для точного подсчёта. |
| Функция считает ячейки с пробелами как пустые | Пробелы или неразрывные пробелы (CHAR(160)) воспринимаются как содержимое. |
Очистите данные через СЖПРОБЕЛЫ или =ПОДСТАВИТЬ(A1; CHAR(160); ""). |
ПРОМЕЖУТОЧНЫЕ.ИТОГИ не обновляется при фильтрации |
Формула не пересчитывается автоматически. | Нажмите F9 или проверьте настройки вычислений (Формулы → Параметры вычислений → Автоматически). |
Формула массива возвращает #ЗНАЧ! |
В старых версиях Excel забыли нажать Ctrl+Shift+Enter. |
Введите формулу заново с правильным подтверждением. |
Ещё одна распространённая проблема — скрытые символы в "пустых" ячейках. Например, после импорта данных из CSV или PDF в ячейках могут оставаться:
- 🔹 Неразрывные пробелы (
CHAR(160)). - 🔹 Символы табуляции или перевода строки.
- 🔹 Нулёвые байты (
CHAR(0)).
Чтобы их обнаружить, используйте функцию КОДСИМВ:
=КОДСИМВ(ЛЕВСИМВ(A1))
Если результат — 160, 9 (табуляция) или 10 (перевод строки), очистите ячейку через СЖПРОБЕЛЫ или ПОДСТАВИТЬ.
FAQ: Ответы на частые вопросы
Можно ли посчитать заполненные ячейки в нескольких листах одновременно?
Да, используйте трёхмерные ссылки. Например, чтобы посчитать заполненные ячейки в диапазоне A1:A10 на листах Лист1, Лист2 и Лист3:
=СЧЁТЗ(Лист1:Лист3!A1:A10)
Или через Power Query (объедините данные с нескольких листов в один запрос).
Как посчитать заполненные ячейки в динамическом диапазоне (например, до первой пустой строки)?
Используйте комбинацию СМЕЩ и СЧЁТЗ:
=СЧЁТЗ(СМЕЩ(A1; 0; 0; ПОИСКПОЗ(ИСТИНА; A:A=""; 0)-1; 1))
Эта формула найдёт первую пустую ячейку в столбце A и посчитает все заполненные ячейки выше неё.
Почему СЧЁТЕСЛИ не считает ячейки с формулами?
СЧЁТЕСЛИ учитывает отображаемое значение ячейки, а не формулу. Если формула возвращает пустую строку (""), ячейка будет проигнорирована. Чтобы посчитать ячейки с формулами, используйте:
=СУММПРОИЗВ(--(ЕПУСТО(A1:A20)=ЛОЖЬ))
Или проверьте наличие формул через ЕФОРМУЛА (требует подключения надстройки Analysis ToolPak).
Как посчитать заполненные ячейки в сводной таблице?
Сводные таблицы не поддерживают стандартные функции подсчёта. Вместо этого:
- Добавьте поле в область
Значения. - В настройках поля выберите
Количество(дляСЧЁТ) илиКоличество непустых(дляСЧЁТЗ). - Если нужно посчитать уникальные значения, используйте
ЧИСЛОЕСЛИв исходных данных.
Можно ли посчитать заполненные ячейки по цвету?
Стандартными функциями — нет. Используйте VBA (пример кода приведён в разделе 7) или надстройку Kutools for Excel (функция Count by Color).