Работа с большими таблицами в Microsoft Excel часто требует анализа данных на предмет пропущенных значений. Пустые ячейки могут искажать результаты расчётов, мешать сортировке или фильтрации, а иногда — сигнализировать об ошибках в исходных данных. Подсчёт пропусков становится критичной задачей для бухгалтеров, аналитиков и менеджеров, которые хотят убедиться в полноте информации перед принятием решений.
Многие пользователи ошибочно полагают, что достаточно визуально просмотреть таблицу, чтобы найти все пустые ячейки. Однако в документах с тысячами строк этот метод неэффективен. К счастью, Excel предлагает несколько инструментов для автоматизированного поиска и подсчёта пропусков — от базовых функций до продвинутых приёмов с использованием Power Query. В этой статье мы разберём все актуальные способы, включая нюансы работы с "невидимыми" пропусками (например, ячейками с формулами, возвращающими "").
Особое внимание уделим различию между истинно пустыми ячейками (где не было ввода данных) и ячейками с формулами, которые возвращают пустую строку. Это отличие принципиально влияет на выбор метода подсчёта. Например, функция СЧИТАТЬПУСТОТЫ проигнорирует ячейку с формулой =IF(A1=0,"","Заполнено"), даже если она отображается как пустая.
Прежде чем переходить к практике, убедитесь, что ваша версия Excel поддерживает используемые функции. Большинство методов из этой статьи работают в Excel 2010 и новее, включая Excel 365. Для пользователей Google Sheets мы также укажем альтернативные решения, где это уместно.
1. Базовый метод: функция СЧИТАТЬПУСТОТЫ
Самый простой способ подсчитать пустые ячейки — использовать встроенную функцию СЧИТАТЬПУСТОТЫ (англ. COUNTBLANK). Она возвращает количество пустых ячеек в указанном диапазоне, включая ячейки с формулами, которые возвращают пустую строку ("").
Синтаксис функции:
=СЧИТАТЬПУСТОТЫ(диапазон)
Пример: чтобы посчитать пропуски в столбце A с 1 по 100 строку, введите:
=СЧИТАТЬПУСТОТЫ(A1:A100)
⚠️ Внимание: Функция СЧИТАТЬПУСТОТЫ учитывает как истинно пустые ячейки, так и ячейки с формулами, возвращающими "". Однако она не учитывает ячейки с пробелами или неразрывными пробелами (например, введёнными через Alt+0160). Для таких случаев потребуется комбинация с функцией СЖПРОБЕЛЫ.
- ✅ Подходит для быстрого подсчёта видимых пропусков
- ✅ Работает во всех версиях Excel
- ❌ Не отличает истинно пустые ячейки от ячеек с пустыми строками из формул
- ❌ Не учитывает ячейки с пробелами
Если вам нужно исключить ячейки с формулами, возвращающими "", используйте комбинацию функций СЧЁТЗ и СЧИТАТЬ (см. следующий раздел).
2. Продвинутый подсчёт: комбинация СЧЁТЗ и СЧИТАТЬ
Для более точного анализа, когда требуется различать истинно пустые ячейки и ячейки с пустыми строками из формул, используйте следующую формулу:
=СЧЁТЗ(диапазон) - СЧИТАТЬ(диапазон)
Здесь:
СЧЁТЗ(англ.COUNTA) — считает все непустые ячейки, включая текст, числа и логические значения.СЧИТАТЬ(англ.COUNT) — считает только ячейки с числовыми данными.
Разница между этими функциями даст количество ячеек с любыми данными, кроме чисел. Однако чтобы получить именно количество истинно пустых ячеек, формула модифицируется:
=СТРОКА(диапазон) * СТОЛБЕЦ(диапазон) - СЧЁТЗ(диапазон)
Где СТРОКА(диапазон) * СТОЛБЕЦ(диапазон) возвращает общее количество ячеек в диапазоне.
⚠️ Внимание: Этот метод не учитывает ячейки с формулами, возвращающими "", так как СЧЁТЗ воспринимает их как непустые. Для таких случаев потребуется Power Query или VBA.
Пример: чтобы посчитать истинно пустые ячейки в диапазоне A1:B10:
=СТРОКА(A1:B10) * СТОЛБЕЦ(A1:B10) - СЧЁТЗ(A1:B10)
3. Поиск пропусков с помощью фильтров
Если вам нужно не только посчитать, но и визуально выделить пустые ячейки, используйте встроенные фильтры Excel. Этот метод полезен для предварительного анализа данных перед применением формул.
Пошаговая инструкция:
- Выделите диапазон данных (включая заголовки столбцов).
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Нажмите на стрелочку фильтра в заголовке столбца, где нужно найти пропуски.
- Снимите галочку с
(Выделить всё)и оставьте только(Пустые). - Нажмите
OK— в таблице останутся только строки с пустыми ячейками в выбранном столбце.
Чтобы посчитать количество отфильтрованных строк:
- Выделите видимый диапазон (без заголовков).
- Посмотрите количество выделенных строк в строке состояния Excel (внизу окна).
⚠️ Внимание: Фильтры не учитывают ячейки с формулами, возвращающими "", если в настройках Excel отключён параметр Показывать нулевые значения (Файл → Параметры → Дополнительно → Показывать нули в ячейках, которые содержат нулевые значения). В таком случае ячейки с "" будут отображаться как пустые и попадут в фильтр.
Преимущество этого метода — наглядность. Вы не только узнаете количество пропусков, но и увидите их местоположение. Однако для больших таблиц фильтрация может занять время.
Убедиться, что в таблице есть заголовки столбцов
Проверить наличие скрытых строк/столбцов
Отключить объединённые ячейки в диапазоне фильтрации
Сохранить резервную копию данных-->
4. Условное форматирование для визуализации пропусков
Если ваша задача — не только посчитать, но и выделить пустые ячейки, используйте условное форматирование. Этот метод позволяет быстро идентифицировать пропуски без изменения структуры данных.
Как применить:
- Выделите диапазон, в котором нужно найти пропуски.
- Перейдите на вкладку
Главная→Условное форматирование→Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - В первом выпадающем списке выберите
Пустые. - Нажмите
Формати задайте цвет заливки (например, красный). - Нажмите
OK→OK.
Теперь все пустые ячейки будут подсвечены. Чтобы посчитать их количество:
- Скопируйте отформатированный диапазон (
Ctrl+C). - Вставьте его в новый лист как
Значения(Правая кнопка → Специальная вставка → Значения). - Используйте функцию
СЧИТАТЬПУСТОТЫдля подсчёта.
⚠️ Внимание: Условное форматирование, как и фильтры, не различает истинно пустые ячейки и ячейки с формулами, возвращающими "". Если вам нужно точное разделение, комбинируйте этот метод с формулами из раздела 2.
Для автоматизации подсчёта можно создать динамический диапазон с условным форматированием и связать его с функцией СЧЁТЕСЛИ по цвету ячейки. Однако это потребует использования VBA, что выходит за рамки базовой функциональности.
5. Работа с "невидимыми" пропусками: пробелы и символы
Один из самых коварных типов пропусков — ячейки, которые выглядят пустыми, но содержат пробелы, неразрывные пробелы (Char(160)), символы табуляции или другие непечатаемые символы. Стандартные функции вроде СЧИТАТЬПУСТОТЫ их игнорируют, что приводит к ошибкам в анализе.
Чтобы найти такие ячейки, используйте комбинацию функций СЖПРОБЕЛЫ и ДЛСТР:
=ЕСЛИ(ДЛСТР(СЖПРОБЕЛЫ(A1))=0; "Пусто"; "Не пусто")
Эта формула проверяет, становится ли ячейка пустой после удаления всех пробелов. Если да — ячейка содержит только пробелы или неразрывные пробелы.
Для подсчёта таких "псевдопустых" ячеек в диапазоне A1:A100 используйте:
=СУММПРОИЗВ(--(ДЛСТР(СЖПРОБЕЛЫ(A1:A100))=0))
Примечание: это формула массива, вводите её с Ctrl+Shift+Enter в старых версиях Excel (в Excel 365 работает как обычная формула).
⚠️ Внимание: Символы типа неразрывного пробела (Char(160)) могут попадать в данные при копировании из веб-страниц или PDF. Они не удаляются стандартной функцией ПЕЧСИМВ и требуют отдельной обработки. Для их замены используйте:
=ПОДСТАВИТЬ(A1; СИМВОЛ(160); "")
| Тип "пустоты" | Пример содержимого | Функция для обнаружения | Учитывается СЧИТАТЬПУСТОТЫ? |
|---|---|---|---|
| Истинно пустая | (нет данных) | Любая | Да |
Формула с "" |
=IF(A1=0,"","Text") |
ЕПУСТО или ДЛСТР |
Да |
| Пробелы | " " |
СЖПРОБЕЛЫ + ДЛСТР |
Нет |
| Неразрывный пробел | Char(160) |
ПОДСТАВИТЬ + ДЛСТР |
Нет |
| Символ табуляции | Char(9) |
ПЕЧСИМВ + ДЛСТР |
Нет |
Функция Почему СЧИТАТЬПУСТОТЫ не видит ячейки с пробелами?
СЧИТАТЬПУСТОТЫ проверяет только фактическое отсутствие данных в ячейке. Пробел — это символ с кодом 32, поэтому ячейка с пробелом технически не пуста. То же касается неразрывных пробелов (Char(160)) и других непечатаемых символов. Для их обнаружения требуется анализ содержимого ячейки, а не её статуса.
6. Power Query: профессиональный инструмент для анализа пропусков
Для обработки больших наборов данных (десятки тысяч строк) или регулярного анализа пропусков рекомендуется использовать Power Query — инструмент ETL (Extract, Transform, Load), встроенный в Excel 2016 и новее.
Как посчитать пропуски с помощью Power Query:
- Выделите ваш диапазон данных и перейдите на вкладку
Данные→Из таблицы/диапазона(в Excel 2016-2019) илиПолучить данные → Из таблицы/диапазона(в Excel 365). - В открывшемся редакторе Power Query выделите столбец, в котором нужно найти пропуски.
- Перейдите на вкладку
Добавить столбец→Пользовательский столбец. - Введите название нового столбца (например,
Пропуски) и формулу:= if [Column1] = null then 1 else 0(замените
Column1на имя вашего столбца). - Нажмите
OK— в новом столбце появятся1для пропусков и0для заполненных ячеек. - Чтобы посчитать общее количество пропусков, добавьте ещё один пользовательский столбец с формулой:
= List.Sum(#"Добавлен пользовательский столбец"[Пропуски]) - Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
Преимущества Power Query:
- ✅ Обрабатывает миллионы строк без замедления.
- ✅ Точно различает истинно пустые ячейки и ячейки с
"". - ✅ Позволяет автоматизировать процесс (обновление при изменении исходных данных).
- ✅ Можно комбинировать с другими преобразованиями (например, заменой пробелов).
⚠️ Внимание: В Power Query пустые ячейки обозначаются как null, а ячейки с формулами, возвращающими "", — как пустые строки (""). Чтобы учитывать оба типа, модифицируйте формулу:
= if [Column1] = null or [Column1] = "" then 1 else 0
7. VBA-скрипты для автоматизации подсчёта
Для пользователей, знакомых с Visual Basic for Applications, написание макроса может стать самым гибким решением. VBA позволяет учитывать специфические условия, например, игнорировать ячейки с формулами или обрабатывать скрытые символы.
Пример макроса для подсчёта истинно пустых ячеек:
Sub CountTrueBlanks()
Dim rng As Range
Dim cell As Range
Dim blankCount As Long
' Задайте ваш диапазон здесь
Set rng = Selection
blankCount = 0
For Each cell In rng
If IsEmpty(cell) Then
blankCount = blankCount + 1
End If
Next cell
MsgBox "Количество истинно пустых ячеек: " & blankCount, vbInformation
End Sub
Этот скрипт отличает истинно пустые ячейки (IsEmpty) от ячеек с формулами, возвращающими "". Чтобы учитывать и те, и другие, замените условие на:
If IsEmpty(cell) Or cell.Value = "" Then
Для запуска макроса:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Вернитесь в Excel, выделите диапазон и запустите макрос (
Alt+F8→ выберитеCountTrueBlanks→Выполнить).
⚠️ Внимание: Макросы могут быть отключены в настройках безопасности Excel. Чтобы их разрешить, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов и выберите Включить все макросы (не рекомендуется для файлов из ненадёжных источников).
FAQ: Частые вопросы о подсчёте пропусков
Можно ли посчитать пропуски в нескольких листах одновременно?
Да, но для этого потребуется объединить данные с разных листов. Самый простой способ:
- Создайте новый лист и используйте функцию
3D-ссылки(например,=СЧИТАТЬПУСТОТЫ(Лист1:Лист3!A1:A100)). - Или воспользуйтесь Power Query, чтобы объединить листы перед анализом.
Обратите внимание: 3D-ссылки не работают с функциями массива (например, СУММПРОИЗВ).
Почему СЧИТАТЬПУСТОТЫ считает ячейки с формулой =IF(...,"","") как пустые, а СЧЁТЗ — как непустые?
Это связано с тем, как Excel обрабатывает формулы:
СЧИТАТЬПУСТОТЫпроверяет отображаемое значение ячейки. Если формула возвращает"", ячейка выглядит пустой.СЧЁТЗпроверяет наличие любого содержимого, включая формулы. Даже если формула возвращает"", ячейка считается непустой.
Чтобы обойти это, используйте комбинацию =ЕСЛИ(ЕПУСТО(A1);1;0) для точного определения истинно пустых ячеек.
Как посчитать пропуски в фильтрованном диапазоне?
Стандартные функции (СЧИТАТЬПУСТОТЫ, СЧЁТЕСЛИ) игнорируют скрытые строки. Чтобы посчитать пропуски только в видимых ячейках:
- Выделите отфильтрованный диапазон.
- Используйте функцию
ПРОМЕЖУТОЧНЫЕ.ИТОГИ:=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; диапазон)где
103— код для функцииСЧИТАТЬПУСТОТЫ.
Альтернатива: скопируйте видимые ячейки на новый лист (Alt+; для выделения видимых ячеек) и примените СЧИТАТЬПУСТОТЫ.
Можно ли автоматически заполнить пропуски значением из ячейки выше?
Да, для этого используйте инструмент "Заполнить":
- Выделите диапазон с пропусками.
- Перейдите на вкладку
Главная→Найти и выделить→Выделить группу ячеек. - Выберите
Пустые ячейки→OK. - Введите
=и нажмите стрелку вверх (↑), затемCtrl+Enter.
Чтобы заменить формулы на значения: выделите заполненные ячейки → Ctrl+C → Правая кнопка → Специальная вставка → Значения.
Как в Google Sheets посчитать пропуски?
В Google Sheets используйте те же функции, но с английским синтаксисом:
=COUNTBLANK(A1:A100)— аналогСЧИТАТЬПУСТОТЫ.=COUNTA(A1:A100) - COUNT(A1:A100)— аналог комбинацииСЧЁТЗиСЧИТАТЬ.- Для подсчёта ячеек с пробелами:
=SUMPRODUCT(--(LEN(TRIM(A1:A100))=0)).
Отличие: в Google Sheets нет Power Query, но есть Apps Script для автоматизации.