Работа с большими таблицами в Microsoft Excel или Google Sheets часто требует анализа данных на предмет пропусков. Пустые ячейки могут появляться по разным причинам: от случайных ошибок при вводе до намеренных пропусков для структурирования информации. Их наличие влияет на корректность расчётов, построение графиков и даже работу некоторых функций. Например, формула СРЗНАЧ автоматически игнорирует пустые ячейки, а СЧЁТ — нет, что может привести к искажению результатов.
В этой статье мы разберём 5 эффективных способов подсчёта пустых ячеек в столбце — от элементарных методов для новичков до продвинутых приёмов для опытных пользователей. Вы узнаете, как использовать стандартные функции Excel, инструменты фильтрации, условное форматирование и даже макросы VBA для автоматизации процесса. Особое внимание уделим нюансам, которые часто упускают из виду: например, почему функция СЧИТАТЬПУСТОТЫ может давать неверные результаты при работе с формулами, возвращающими пустую строку.
Независимо от версии программы (Excel 2010, 2016, 2019, 365 или Google Таблицы) вы найдёте здесь актуальные решения. А в конце статьи — FAQ с ответами на частые вопросы, включая проблемы с скрытыми символами и невидимыми пробелами.
1. Стандартная функция СЧИТАТЬПУСТОТЫ: быстро, но с ограничениями
Самый очевидный способ подсчёта пустых ячеек — использовать встроенную функцию СЧИТАТЬПУСТОТЫ (англ. COUNTBLANK). Она доступна во всех версиях Excel и Google Sheets и имеет простой синтаксис:
=СЧИТАТЬПУСТОТЫ(диапазон)
Например, чтобы посчитать пустые ячейки в столбце A с 1 по 100 строку, введите:
=СЧИТАТЬПУСТОТЫ(A1:A100)
Однако у этого метода есть критические недостатки, о которых многие не знают:
- 🔹 Функция считает только действительно пустые ячейки (где не было ввода данных). Если ячейка содержит формулу, возвращающую пустую строку (
=""),СЧИТАТЬПУСТОТЫеё проигнорирует. - 🔹 Невидимые символы (пробелы, табуляции, неразрывные пробелы) воспринимаются как содержимое. Например, ячейка с одним пробелом не будет засчитана как пустая.
- 🔹 В Google Sheets функция ведёт себя иначе: она учитывает ячейки с формулами, возвращающими пустую строку, но по-прежнему игнорирует пробелы.
⚠️ Внимание: Если вы импортировали данные из внешних источников (например, из CSV или базы данных), пустые ячейки могут содержать невидимые символы. В этом случаеСЧИТАТЬПУСТОТЫдаст неверный результат. Используйте функциюПЕЧСИМВ(LEN), чтобы проверить длину содержимого ячейки.
Для проверки скрытых символов используйте комбинацию:
=ЕСЛИ(ПЕЧСИМВ(A1)=0; "Пусто"; "Не пусто")
2. Альтернативные формулы: когда СЧИТАТЬПУСТОТЫ не работает
Если стандартная функция не подходит, воспользуйтесь более гибкими альтернативами. Они позволяют учитывать ячейки с формулами, возвращающими пустую строку, а также игнорировать пробелы.
2.1. Комбинация СЧЁТЗ + СЧЁТ
Формула подсчитывает все непустые ячейки (СЧЁТЗ) и вычитает из них количество числовых значений (СЧЁТ):
=СЧЁТЗ(A1:A100) - СЧЁТ(A1:A100)
Этот метод работает, потому что СЧЁТЗ учитывает все непустые ячейки (включая текст, даты, логические значения), а СЧЁТ — только числа. Разница между ними даст количество текста, логических значений и ошибок, но не пустых ячеек. Чтобы получить количество пустых ячеек, используйте:
=СТРОКА(A100) - СЧЁТЗ(A1:A100)
Где СТРОКА(A100) возвращает номер последней строки диапазона (100).
2.2. Формула массива для учёта формул с пустыми результатами
Если в ячейках есть формулы, возвращающие пустую строку (например, =ЕСЛИ(A1=0; ""; A1*2)), используйте формулу массива:
=СУММ(--(A1:A100=""))
В Excel 365 и 2019 её можно вводить как обычную формулу. В старых версиях завершайте ввод комбинацией Ctrl+Shift+Enter. Эта формула проверяет каждую ячейку на равенство пустой строке, включая результаты формул.
2.3. Учёт невидимых пробелов с помощью СЖПРОБЕЛЫ
Чтобы игнорировать пробелы и табуляции, комбинируйте СЖПРОБЕЛЫ (TRIM) с проверкой на пустоту:
=СУММ(--(СЖПРОБЕЛЫ(A1:A100)=""))
Эта формула удаляет все пробелы в начале и конце текста, а также заменяет несколько пробелов между словами на один. Если после обработки ячейка становится пустой, она засчитывается.
| Метод | Учитывает формулы с "" | Игнорирует пробелы | Работает в Google Sheets |
|---|---|---|---|
СЧИТАТЬПУСТОТЫ |
❌ Нет | ❌ Нет | ✅ Да |
СЧЁТЗ - СЧЁТ |
❌ Нет | ❌ Нет | ✅ Да |
Формула массива =СУММ(--(A1:A100="")) |
✅ Да | ❌ Нет | ✅ Да |
Формула с СЖПРОБЕЛЫ |
✅ Да | ✅ Да | ✅ Да |
3. Фильтрация данных: визуальный способ без формул
Если вам нужно не только посчитать, но и увидеть, где именно находятся пустые ячейки, используйте инструмент фильтрации. Этот метод не требует знания формул и подходит для начинающих.
Как применить фильтр:
- Выделите заголовок столбца (например, ячейку
A1). - Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Нажмите на стрелочку фильтра в заголовке столбца и снимите галочку с
Выделить всё. - В списке значений найдите и отметьте
(Пустые).
После применения фильтра Excel покажет только строки с пустыми ячейками в выбранном столбце. Количество отфильтрованных строк будет отображено в статусной строке внизу окна (например, "Записи: 5 из 100").
Применить фильтр к столбцу|Выбрать "(Пустые)" в списке значений|Посмотреть количество отфильтрованных строк в статусной строке|При необходимости скопировать отфильтрованные данные в новый лист-->
⚠️ Внимание: Фильтрация не учитывает ячейки с формулами, возвращающими пустую строку. Например, если в ячейке формула =ЕСЛИ(B1=0; ""; B1*2), и условие истинно, фильтр её не покажет как пустую. Для таких случаев комбинируйте фильтрацию с условным форматированием (см. следующий раздел).
Преимущество этого метода — наглядность. Вы сразу видите, где расположены пропуски, и можете их заполнить или удалить. Кроме того, фильтрация работает быстрее формул на больших массивах данных (10 000+ строк).
4. Условное форматирование: выделение пустых ячеек
Если вам нужно не только посчитать, но и визуально выделить пустые ячейки, используйте условное форматирование. Это поможет быстро найти пропуски в больших таблицах.
Инструкция для Excel:
- Выделите диапазон ячеек (например,
A1:A100). - Перейдите на вкладку
Главная→Условное форматирование→Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - В первом выпадающем списке установите
Значение ячейки→равно. - Во втором поле введите
=""(пустую строку). - Нажмите
Формати выберите цвет заливки (например, красный).
Для учёта формул, возвращающих пустую строку, используйте формулу в правиле:
=A1=""
Чтобы игнорировать пробелы, применяйте:
=СЖПРОБЕЛЫ(A1)=""
После применения правила все пустые ячейки (включая те, что содержат формулы с пустым результатом) будут выделены выбранным цветом. Теперь их легко посчитать вручную или с помощью функции СЧЁТЦВЕТ (если она доступна в вашей версии Excel).
5. Продвинутые методы: Power Query и VBA
Для обработки очень больших таблиц (100 000+ строк) или автоматизации регулярных задач используйте Power Query или макросы VBA. Эти инструменты позволяют гибко настраивать критерии подсчёта и обрабатывать данные без ручного вмешательства.
5.1. Подсчёт пустых ячеек в Power Query
Power Query (доступен в Excel 2016+ и 365) позволяет импортировать данные, трансформировать их и подсчитывать пустые значения с учётом различных условий.
Алгоритм действий:
- Выделите диапазон данных и перейдите на вкладку
Данные→Из таблицы/диапазона(илиПолучить данные→Из таблицы/диапазона). - В открывшемся редакторе Power Query выделите столбец, в котором нужно посчитать пустые ячейки.
- Перейдите на вкладку
Преобразование→Заменить значения. - В поле
Значение для поискаоставьте пустым, вЗаменить навведитеNULL(или любое другое временное значение). - Добавьте пользовательский столбец с формулой
= if [Column1] = null then 1 else 0(заменитеColumn1на имя вашего столбца). - Сгруппируйте данные по этому столбцу, чтобы получить количество пустых ячеек.
Преимущество Power Query — возможность сохранять шаги обработки и обновлять результаты при изменении исходных данных.
5.2. Макрос VBA для автоматизации
Если вам нужно регулярно подсчитывать пустые ячейки в разных файлах, напишите простой макрос. Например, этот код считает пустые ячейки в выделенном диапазоне и выводит результат в окне сообщения:
Sub CountEmptyCells()
Dim rng As Range
Dim emptyCount As Long
Set rng = Selection
emptyCount = 0
For Each cell In rng
If IsEmpty(cell) Or cell.Value = "" Then
emptyCount = emptyCount + 1
End If
Next cell
MsgBox "Количество пустых ячеек: " & emptyCount, vbInformation
End Sub
Чтобы использовать этот макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert→Module). - Выделите диапазон в Excel и запустите макрос (
F5или черезМакросына вкладкеРазработчик).
⚠️ Внимание: МакросIsEmptyпроверяет только действительно пустые ячейки (где не было ввода). Чтобы учитывать ячейки с формулами, возвращающими пустую строку, замените условие наIf cell.Value = "" Then. Для учёта пробелов добавьтеOr Trim(cell.Value) = "".
6. Особенности работы в Google Sheets
Google Таблицы поддерживают большинство функций Excel, но есть нюансы:
- 🔹 Функция
COUNTBLANKв Google Sheets учитывает ячейки с формулами, возвращающими пустую строку (в отличие от Excel). - 🔹 Для подсчёта ячеек с пробелами используйте
=COUNTA(ARRAYFORMULA(LEN(TRIM(A1:A100))=0)). - 🔹 Условное форматирование настраивается аналогично, но формулы в правилах нужно вводить на английском (например,
=ISBLANK(A1)). - 🔹 В Google Sheets нет Power Query, но можно использовать
Apps Scriptдля автоматизации.
Пример скрипта для подсчёта пустых ячеек в Google Sheets:
function countEmptyCells() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var values = range.getValues();
var emptyCount = 0;
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] === "") {
emptyCount++;
}
}
}
SpreadsheetApp.getUi().alert("Количество пустых ячеек: " + emptyCount);
}
Чтобы запустить скрипт, перейдите в Расширения → Apps Script, вставьте код и нажмите Запуск.
7. Типичные ошибки и как их избежать
При подсчёте пустых ячеек пользователи часто сталкиваются с неожиданными результатами. Рассмотрим наиболее распространённые ошибки и способы их решения.
7.1. Ячейки "кажутся" пустыми, но не являются таковыми
Частая проблема — ячейки визуально пустые, но содержат:
- 🔹 Неразрывные пробелы (вставляются через
Ctrl+Shift+Пробел). - 🔹 Символы табуляции или переноса строки.
- 🔹 Апостроф (') в начале ячейки (используется для принудительного текстового формата).
- 🔹 Формулы с пустым результатом (например,
=ЕСЛИ(A1=0; ""; A1)).
Чтобы выявить такие ячейки, используйте функцию ПЕЧСИМВ (LEN):
=ЕСЛИ(ПЕЧСИМВ(A1)>0; "Есть символы"; "Пусто")
Если функция возвращает "Есть символы", но ячейка выглядит пустой, примените СЖПРОБЕЛЫ или ПОДСТАВИТЬ для очистки:
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; СИМВОЛ(160); ""); СИМВОЛ(9); ""))
Где СИМВОЛ(160) — неразрывный пробел, а СИМВОЛ(9) — табуляция.
7.2. Ошибки при работе с фильтрами
Фильтрация может давать неверные результаты, если:
- 🔹 В таблице есть объединённые ячейки — фильтр их игнорирует.
- 🔹 Данные содержат скрытые строки или столбцы.
- 🔹 Включён режим "Только видимые ячейки" в настройках фильтра.
Решения:
- 🔹 Перед фильтрацией разъедините ячейки (
Главная→Объединить и центрировать→Отменить объединение). - 🔹 Покажите все скрытые строки (
Главная→Формат→Скрыть/отобразить→Отобразить строки). - 🔹 В настройках фильтра (
Данные→Фильтр→Дополнительно) снимите галочку сТолько уникальные записи.
7.3. Проблемы с формулами массива
В старых версиях Excel (до 2019) формулы массива требуют специального ввода (Ctrl+Shift+Enter). Если забыть нажать эту комбинацию, формула будет работать неправильно. Например:
=СУММ(--(A1:A100=""))
Без Ctrl+Shift+Enter Excel обработает только первую ячейку (A1), а не весь диапазон. В Excel 365 и 2019 этот недостаток устранён — формулы массива вводятся как обычные.
Как проверить, правильно ли введена формула массива?
В старых версиях Excel формула массива после ввода Ctrl+Shift+Enter автоматически заключается в фигурные скобки: {=СУММ(--(A1:A100=""))}. Если скобок нет — формула введена неправильно. В Excel 365 фигурные скобки не отображаются, но формула работает с целым диапазоном.
FAQ: Ответы на частые вопросы
Почему функция СЧИТАТЬПУСТОТЫ не считает ячейки с формулой, возвращающей пустую строку?
Функция СЧИТАТЬПУСТОТЫ в Excel учитывает только ячейки, в которых никогда не было ввода данных. Если ячейка содержит формулу (даже если она возвращает пустую строку), СЧИТАТЬПУСТОТЫ её игнорирует. Чтобы посчитать такие ячейки, используйте формулу массива:
=СУММ(--(A1:A100=""))
В Google Sheets функция COUNTBLANK ведёт себя иначе и учитывает ячейки с формулами, возвращающими "".
Как посчитать пустые ячейки в нескольких столбцах одновременно?
Чтобы подсчитать пустые ячейки в нескольких столбцах (например, A1:D100), используйте:
=СУММ(--(A1:D100=""))
Эта формула массива проверяет каждый столбец в диапазоне. Если нужно посчитать пустые ячейки во всей строке (т.е. строки, где хотя бы одна ячейка пустая), используйте:
=СУММ(--(СЧЁТЗ(A1:D1)=0))
Где A1:D1 — первая строка диапазона. Растяните формулу вниз.
Можно ли посчитать пустые ячейки с учётом скрытых строк?
Да, но стандартные функции (СЧИТАТЬПУСТОТЫ, СЧЁТЗ) учитывают все ячейки, включая скрытые. Если нужно игнорировать скрытые строки, используйте VBA:
Sub CountVisibleEmptyCells()
Dim rng As Range, cell As Range
Dim emptyCount As Long
Set rng = Selection
emptyCount = 0
For Each cell In rng
If cell.EntireRow.Hidden = False Then
If IsEmpty(cell) Or cell.Value = "" Then
emptyCount = emptyCount + 1
End If
End If
Next cell
MsgBox "Пустых ячеек в видимых строках: " & emptyCount, vbInformation
End Sub
Этот макрос проверяет видимость строки (cell.EntireRow.Hidden) перед подсчётом.
Как удалить все строки с пустыми ячейками в столбце?
Чтобы удалить строки, где в определённом столбце (например, A) есть пустые ячейки:
- Примените фильтр к столбцу и выберите
(Пустые). - Выделите отфильтрованные строки (нажмите
Ctrl+A, затемAlt+;для выбора только видимых ячеек). - Кликните правой кнопкой по номерам строк и выберите
Удалить строку.
Для автоматизации используйте макрос:
Sub DeleteRowsWithEmptyCells()
Dim rng As Range, cell As Range
Dim i As Long
Set rng = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
For i = rng.Rows.Count To 1 Step -1
If IsEmpty(rng.Cells(i, 1)) Or rng.Cells(i, 1).Value = "" Then
rng.Cells(i, 1).EntireRow.Delete
End If
Next i
End Sub
Обратите внимание: цикл идёт с конца (For i = rng.Rows.Count To 1 Step -1), чтобы избежать сдвига строк при удалении.
Почему после импорта данных из CSV пустые ячейки не распознаются?
При импорте из CSV или других источников пустые ячейки могут содержать:
- 🔹 Неразрывные пробелы (
CHAR(160)). - 🔹 Символы табуляции или переноса строки.
- 🔹 Значения NULL (в базах данных).
Чтобы очистить такие ячейки, используйте:
=ЕСЛИ(И(ПЕЧСИМВ(A1)>0; СЖПРОБЕЛЫ(A1)=""; ПОДСТАВИТЬ(A1; СИМВОЛ(160); "")=""); "Пусто"; "Не пусто")
Для массовой очистки примените Найти и заменить (Ctrl+H): в поле "Найти" вставьте неразрывный пробел (скопируйте его из другой программы, например, Word), в поле "Заменить на" оставьте пустым.