Как посчитать заполненные ячейки в Excel: формулы, примеры и лайфхаки

Почему простой подсчет ячеек — это не так просто, как кажется

На первый взгляд, задача подсчитать количество заполненных ячеек в Microsoft Excel или Google Таблицах кажется тривиальной. Но как только вы начинаете работать с реальными данными — появляются нюансы. Что считать "заполненной" ячейкой? Текст, числа, формулы, которые возвращают пустую строку? А как быть с ячейками, где стоит апостроф перед числом или пробел? Эти вопросы превращают простую задачу в головоломку.

В этой статье мы разберём 5 основных методов подсчёта непустых ячеек — от базовой функции COUNTA до сложных формул массива. Вы узнаете, какой способ выбрать для конкретной задачи, как избежать типичных ошибок и даже научитесь считать ячейки с учётом цвета или условного форматирования. А в конце вас ждёт сравнительная таблица всех методов с плюсами и минусами каждого.

Если вы когда-нибудь сталкивались с ситуацией, когда COUNTA возвращает неожиданное значение или нужно посчитать только ячейки с определённым типом данных — этот материал для вас. Мы не будем ограничиваться теорией: каждый метод проиллюстрирован практическими примерами с формулами, которые можно скопировать и использовать сразу.

📊 Какой версией Excel вы пользуетесь чаще всего?
Microsoft Excel 2019/2021
Excel 365 (онлайн или десктоп)
Google Таблицы
Excel 2016 или старше
Другая версия

Метод 1: COUNTA — универсальная формула для большинства задач

Функция COUNTA (от англ. count all — "посчитать всё") — это первый инструмент, к которому прибегают пользователи. Она подсчитывает количество непустых ячеек в указанном диапазоне, независимо от типа данных. Синтаксис простейший:

=COUNTA(диапазон)

Например, формула =COUNTA(A1:A10) вернёт количество ячеек в диапазоне A1:A10, которые содержат любые данные: числа, текст, даты, логические значения (ИСТИНА/ЛОЖЬ), ошибки (#Н/Д, #ЗНАЧ!) или даже формулы, возвращающие пустую строку "". Но здесь кроется первый подвох.

  • Что считает COUNTA: текст ("Привет"), числа (42), даты (15.05.2023), логические значения (ИСТИНА), ошибки (#ДЕЛ/0!), формулы вида ="".
  • Что НЕ считает: действительно пустые ячейки (без формул) и ячейки с формулами, возвращающими 0 (ноль).

Практический пример: если в ячейке A1 формула =ЕСЛИ(B1>10; "Да"; ""), и условие ложно (возвращается пустая строка), то COUNTA посчитает эту ячейку как заполненную! Это часто вводит в заблуждение.

Метод 2: СУММПРОИЗВ для гибкого подсчёта с условиями

Когда COUNTA не подходит — например, нужно посчитать только ячейки с числами или текстом, но игнорировать ошибки — на помощь приходит СУММПРОИЗВ (или SUMPRODUCT в английской версии). Эта функция позволяет комбинировать несколько условий и работать с массивами данных.

Базовый синтаксис для подсчёта непустых ячеек:

=СУММПРОИЗВ(--(диапазон<>""))

Разберём, как это работает:

  1. диапазон<>"" — проверяет каждую ячейку на непустоту (возвращает массив ИСТИНА/ЛОЖЬ).
  2. -- (двойной минус) — преобразует ИСТИНА/ЛОЖЬ в 1/0.
  3. СУММПРОИЗВ — суммирует все единицы, давая итоговое количество непустых ячеек.

Преимущество этого метода в том, что его можно модифицировать. Например, чтобы посчитать только ячейки с числами:

=СУММПРОИЗВ(--(ЕЧИСЛО(диапазон)))

Или только с текстом (игнорируя числа и даты):

=СУММПРОИЗВ(--(ЕТЕКСТ(диапазон)))
Почему двойной минус (--)?

Двойной минус — это сокращённый способ преобразования логических значений в числа. ИСТИНА становится 1, а ЛОЖЬ0. Альтернатива: использовать функцию ЕСЛИ, но она требует нажатия CTRL+SHIFT+ENTER для массива.

Метод 3: COUNTIF и COUNTIFS — подсчёт с фильтрацией

Если вам нужно не просто посчитать заполненные ячейки, а отфильтровать их по определённому критерию — используйте COUNTIF (для одного условия) или COUNTIFS (для нескольких). Эти функции игнорируют пустые ячейки по умолчанию, поэтому их часто применяют для условного подсчёта.

Примеры:

  • 📌 Подсчёт ячеек с конкретным текстом: =COUNTIF(A1:A10; "Да").
  • 📌 Подсчёт чисел больше 100: =COUNTIF(A1:A10; ">100").
  • 📌 Подсчёт ячеек, содержащих часть текста: =COUNTIF(A1:A10; "привет").
  • 📌 Подсчёт непустых ячеек (альтернатива COUNTA): =COUNTIF(A1:A10; "<>"").

Важное отличие от COUNTA: COUNTIF не считает ячейки с формулами, возвращающими пустую строку (=""). Например, если в ячейке формула =ЕСЛИ(B1>0; B1; ""), и результат пуст, то COUNTIF проигнорирует её, а COUNTA — посчитает.

Для сложных условий используйте COUNTIFS. Например, подсчёт ячеек в диапазоне A1:A10, которые не пустые и соответствуют второму условию в B1:B10:

=COUNTIFS(A1:A10; "<>""; B1:B10; ">50")

Метод 4: Функции массива (CSE) для продвинутых задач

Когда стандартные функции не справляются — например, нужно посчитать ячейки с уникальными значениями или игнорировать ошибки — на помощь приходят формулы массива. Они требуют нажатия CTRL+SHIFT+ENTER (в старых версиях Excel) или работают автоматически в Excel 365.

Примеры:

  • 🔢 Подсчёт уникальных непустых значений: =СУММ(1/ЧАСТОТА(ЕСЛИ(диапазон<>""; диапазон); ЕСЛИ(диапазон<>""; диапазон))).
  • 🔢 Подсчёт непустых ячеек, игнорируя ошибки: =СУММ(ЕСЛИОШИБКА(1/(диапазон<>""); 0)).
  • 🔢 Подсчёт ячеек с формулами (даже если они возвращают пустоту): =СУММ(--(ЕФОРМУЛА(диапазон))).

Формулы массива мощные, но ресурсоёмкие. Их стоит использовать только для сложных задач, где другие методы не работают. Например, если вам нужно посчитать количество заполненных ячеек в динамическом диапазоне, который меняется в зависимости от других условий.

Убедитесь, что диапазон не содержит ошибок|Проверьте версию Excel (в 365 формулы массива работают иначе)|Тестируйте формулу на небольшом диапазоне|Используйте F9 для отладки (выделение части формулы и нажатие F9 покажет промежуточный результат)-->

Метод 5: VBA и Power Query для автоматизации

Если вам регулярно приходится считать заполненные ячейки в больших таблицах или с нестандартными условиями (например, по цвету или форматированию), стоит обратить внимание на макросы VBA или Power Query. Эти инструменты позволяют автоматизировать рутинные задачи.

Пример кода на VBA для подсчёта непустых ячеек в выделенном диапазоне:

Function CountNonEmpty(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

CountNonEmpty = count

End Function

Чтобы использовать этот код:

  1. Нажмите ALT+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Теперь в Excel можно использовать функцию =CountNonEmpty(A1:A10).

Преимущество VBA в том, что вы можете добавить любые условия. Например, посчитать только ячейки с красным цветом шрифта или определённым форматированием. Однако для этого потребуются знания программирования.

Альтернатива — Power Query (доступен в Excel 2016+). С его помощью можно загрузить данные, отфильтровать пустые ячейки и посчитать строки. Это особенно удобно для работы с внешними источниками данных (например, CSV или SQL).

Сравнение методов: какой выбрать для вашей задачи

Чтобы облегчить выбор, мы составили таблицу с сравнением всех методов. Ориентируйтесь на неё, когда решаете, какую функцию использовать.

Метод Подходит для Плюсы Минусы Пример
COUNTA Простого подсчёта непустых ячеек Простота, скорость, работает во всех версиях Excel Считает ячейки с формулами, возвращающими "" =COUNTA(A1:A10)
СУММПРОИЗВ Гибкого подсчёта с условиями Можно комбинировать условия, работает с массивами Синтаксис сложнее, чем у COUNTA =СУММПРОИЗВ(--(A1:A10<>""))
COUNTIF/COUNTIFS Подсчёта с фильтрацией по значению Простой синтаксис, поддерживает несколько условий Не работает с формулами, возвращающими "" =COUNTIF(A1:A10; "<>"")
Формулы массива Сложных задач (уникальные значения, игнорирование ошибок) Максимальная гибкость Требуют CTRL+SHIFT+ENTER, ресурсоёмкие =СУММ(ЕСЛИОШИБКА(1/(A1:A10<>""); 0))
VBA/Power Query Автоматизации и работы с большими данными Можно реализовать любую логику Требует знаний программирования См. пример кода выше

Критически важный нюанс: если ваша таблица содержит ячейки с формулами, возвращающими пустую строку (например, =ЕСЛИ(A1>0; A1; "")), то COUNTA и СУММПРОИЗВ посчитают их как заполненные, а COUNTIF — нет. Это самая частая причина расхождений в результатах.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel иногда сталкиваются с неожиданными результатами при подсчёте ячеек. Вот самые распространённые ошибки и способы их решения:

⚠️ Внимание: Если в диапазоне есть ячейки с формулой =НД() (ошибка #Н/Д), то COUNTA посчитает их как заполненные, а СУММПРОИЗВ с условием <>"" — тоже. Чтобы игнорировать ошибки, используйте =СУММПРОИЗВ(--(ЕНД(диапазон)=ЛОЖЬ); --(диапазон<>"")).
  • 🚫 Ошибка 1: Формула возвращает неожиданно большое число. Причина: в диапазоне есть скрытые символы (пробелы, неразрывные пробелы, символы табуляции). Решение: используйте =СЖПРОБЕЛЫ() для очистки данных.
  • 🚫 Ошибка 2: COUNTA и COUNTIF дают разные результаты. Причина: в ячейках формулы, возвращающие "". Решение: определитесь, что для вас "заполненная" ячейка, и выберите соответствующий метод.
  • 🚫 Ошибка 3: Формула массива не работает. Причина: не нажали CTRL+SHIFT+ENTER (в Excel 2019 и старше). Решение: повторите ввод формулы с правильной комбинацией клавиш.

Ещё одна ловушка — ячейки с апострофом (например, '123). Такие ячейки Excel воспринимает как текст, и все функции их посчитают как заполненные. Если вам нужно игнорировать их, используйте:

=СУММПРОИЗВ(--(ЕЧИСЛО(ЗНАЧЕН(A1:A10))))

Эта формула преобразует текстовые числа в числа и считает только их.

⚠️ Внимание: В Google Таблицах некоторые функции работают иначе. Например, ARRAYFORMULA требуется для формул массива вместо CTRL+SHIFT+ENTER. Всегда тестируйте формулы в вашей среде.

FAQ: Ответы на частые вопросы

Как посчитать заполненные ячейки в фильтрованном диапазоне?

Используйте функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ (или SUBTOTAL в английской версии) с первым аргументом 103 (для COUNTA):

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103; диапазон)

Эта функция игнорирует скрытые строки, что удобно для работы с фильтрами.

Можно ли посчитать ячейки с определённым цветом заполнения?

Стандартными формулами — нет. Но можно написать функцию на VBA:

Function CountByColor(rng As Range, color As Range) As Long

Dim cell As Range

Dim count As Long

count = 0

For Each cell In rng

If cell.Interior.Color = color.Interior.Color Then

count = count + 1

End If

Next cell

CountByColor = count

End Function

Использование: =CountByColor(A1:A10; B1), где B1 — ячейка с нужным цветом.

Почему COUNTA считает пустые ячейки?

Скорее всего, в "пустых" ячейках есть невидимые символы (пробелы, символы переноса строки) или формулы, возвращающие "". Чтобы проверить:

  1. Выделите ячейку и посмотрите в строку формул.
  2. Используйте =ДЛСТР(A1) — если длина > 0, ячейка не пустая.
  3. Примените =СЖПРОБЕЛЫ(A1) для удаления лишних пробелов.
Как посчитать заполненные ячейки в нескольких листах?

Используйте трёхмерные ссылки. Например, чтобы посчитать непустые ячейки в диапазоне A1:A10 на листах Лист1 и Лист2:

=СУММ(COUNTA(Лист1:Лист2!A1:A10))

Важно: все листы должны иметь одинаковую структуру.

Есть ли разница между COUNTA в Excel и Google Таблицах?

В большинстве случаев нет, но есть нюансы:

  • В Google Таблицах COUNTA не считает ячейки с формулами, возвращающими "" (в отличие от Excel).
  • Формулы массива в Google Таблицах требуют обёртки в ARRAYFORMULA.
  • В Excel 365 появились динамические массивы, которых нет в Google Таблицах.