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

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

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

Мы рассмотрим не только базовые функции вроде COUNTA, но и продвинутые техники с COUNTIF, SUMPRODUCT, а также комбинации с LEN для обработки ячеек, которые "выглядят пустыми", но содержат скрытые символы. Особое внимание уделим типичным ошибкам, из-за которых формулы работают неправильно — например, когда ячейка содержит формулу, возвращающую пустую строку "", но визуально кажется заполненной.

📊 Как часто вы используете подсчёт ячеек в Excel?
Ежедневно
Несколько раз в неделю
Реди
Никогда не использовал

1. Базовая функция COUNTA: подсчёт всех непустых ячеек

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

  • 🔢 Числа (включая даты и время)
  • 📝 Текст (даже один символ)
  • 🔄 Логические значения (ИСТИНА/ЛОЖЬ)
  • 📊 Ошибки (#ДЕЛ/0!, #Н/Д и др.)
  • 👻 Формулы, возвращающие пустую строку "" (в отличие от truly empty ячеек)

Синтаксис функции прост:

=COUNTA(значение1; [значение2]; ...)

Где значение1 — обязательный аргумент (диапазон или отдельная ячейка), а последующие аргументы не обязательны. Например, чтобы посчитать заполненные ячейки в столбце A с 1 по 100 строку, используйте:

=COUNTA(A1:A100)

Важный нюанс: COUNTA игнорирует ячейки с формулами, которые возвращают истинно пустое значение (например, =ЕСЛИ(A1=0; "") без кавычек). Но если формула возвращает строку с пробелом или неразрывным пробелом (CHAR(160)), такая ячейка будет посчитана как заполненная.

⚠️ Внимание: Если в диапазоне есть ячейки с формулами массива (например, {=ТРАНСП(A1:B10)}), COUNTA может давать неожиданные результаты. В таких случаях лучше использовать ROWS или COLUMNS для проверки размерности массива.

2. COUNTIF: подсчёт ячеек по условию

Когда нужно посчитать не просто заполненные ячейки, а те, что соответствуют определённому критерию, на помощь приходит COUNTIF. Эта функция позволяет фильтровать данные по тексту, числам, символам подстановочным знакам (* и ?). Например, вы можете посчитать:

  • 📌 Ячейки с конкретным словом (например, "Да")
  • 📌 Числа в заданном диапазоне (например, >100)
  • 📌 Текст, начинающийся или заканчивающийся на определённые символы

Синтаксис:

=COUNTIF(диапазон; критерий)

Примеры использования:

=COUNTIF(B2:B100; "Да")  

=COUNTIF(C2:C100; ">50")

=COUNTIF(D2:D100; "*ов")

Для подсчёта всех непустых ячеек с помощью COUNTIF используйте критерий "*" (звёздочка означает "любой символ"):

=COUNTIF(A1:A100; "*")
Этот метод надёжнее COUNTA, если в данных есть ячейки с формулами, возвращающими пустую строку ""COUNTIF их посчитает, а COUNTA нет.

Убедитесь, что критерий заключён в кавычки

Используйте & для объединения текста с ячейками (например, ">"&B1)

Для регистронезависимого поиска преобразуйте текст в один регистр (НИЖНРЕГ или ВЕРХНРЕГ)

-->

3. SUMPRODUCT: гибкий подсчёт с несколькими условиями

Функция SUMPRODUCT — мощный инструмент для сложных вычислений, включая подсчёт ячеек по нескольким критериям одновременно. В отличие от COUNTIFS, она позволяет использовать массивы условий и работает быстрее на больших диапазонах.

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

=SUMPRODUCT(--(A1:A100<>""))

Здесь:

  • A1:A100<>"" — проверяет, что ячейка не пустая (возвращает массив ИСТИНА/ЛОЖЬ)
  • -- — преобразует логические значения в 1 и 0 (удвоенный минус)
  • SUMPRODUCT — суммирует все 1, давая количество непустых ячеек

Преимущества SUMPRODUCT:

  • 🔹 Работает с несколькими диапазонами (например, подсчёт ячеек, где одновременно заполнены столбцы A и B)
  • 🔹 Поддерживает динамические диапазоны (например, A1:INDEX(A:A; MATCH(9E+307; A:A)))
  • 🔹 Может комбинироваться с другими функциями (LEN, ISTEXT и др.)

Пример подсчёта ячеек, где столбец A не пустой, а столбец B содержит число больше 100:

=SUMPRODUCT(--(A1:A100<>""); --(B1:B100>100))
⚠️ Внимание: Если в диапазоне есть текстовые значения, которые выглядят как числа (например, "123"), SUMPRODUCT может обрабатывать их некорректно. Для надёжности преобразуйте данные в числа с помощью -- или ЗНАЧЕН.

4. Ловушки с "пустыми" ячейками: как обнаружить скрытые символы

Частая проблема при подсчёте заполненных ячеек — наличие невидимых символов, из-за которых ячейка кажется пустой, но формулы её учитывают. Источники таких символов:

  • 🧹 Пробелы или табуляции (введены случайно)
  • 📏 Неразрывные пробелы (CHAR(160)), добавленные при копировании из веб
  • 🔄 Символы переноса строки (CHAR(10))
  • 📊 Формулы, возвращающие "пустую строку" (="")

Чтобы выявить такие ячейки, используйте комбинацию функций LEN (длина строки) и TRIM (удаление пробелов):

=LEN(TRIM(A1))>0

Эта формула вернёт ИСТИНА, если в ячейке есть хоть один значимый символ после удаления пробелов.

Для подсчёта ячеек со скрытыми символами:

=SUMPRODUCT(--(LEN(TRIM(A1:A100))>0))

Практические советы:

  • 🔍 Для визуальной проверки включите режим отображения непечатаемых символов (вкладка Главная → группа Абзац → кнопка ).
  • 🧹 Чтобы очистить данные, используйте ТРИМ или ПОДСТАВИТЬ (например, =ПОДСТАВИТЬ(A1; CHAR(160); "")).
Как удалить все невидимые символы в диапазоне?

1. Выделите диапазон данных.

2. Нажмите Ctrl+H (замена).

3. В поле "Найти" введите ~ (тильда), затем пробел.

4. В поле "Заменить на" оставьте пустым.

5. Нажмите "Заменить всё".

6. Повторите для CHAR(160) (неразрывный пробел), вставив его через формулу =СИМВОЛ(160) в отдельную ячейку и скопировав результат.

5. Подсчёт заполненных ячеек в фильтрованных данных

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

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; A1:A100)

Где:

  • 3 — код операции для функции СЧЁТ (подсчёт непустых ячеек)
  • A1:A100 — диапазон для анализа

Особенности работы:

  • 🔹 Функция автоматически игнорирует скрытые строки (как ручным скрытием, так и через фильтр).
  • 🔹 Не работает с скрытыми столбцами — только со строками.
  • 🔹 Требует наличия заголовков в диапазоне (иначе может посчитать их как данные).

Для подсчёта видимых ячеек с условием (например, только числа >10) комбинируйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ с ЕСЛИ:

=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(9; A1:A100 * (A1:A100>10))

Здесь 9 — код операции для СУММ, а умножение на условие преобразует данные в массив, где несоответствующие ячейки становятся 0.

6. Продвинутые техники: массивы и пользовательские функции

Для нестандартных задач (например, подсчёт ячеек с формулами или анализ формата данных) стандартных функций может быть недостаточно. В таких случаях помогают:

  • 📌 Формулы массива (вводимые через Ctrl+Shift+Enter в старых версиях Excel)
  • 📌 Пользовательские функции VBA (для автоматизации повторяющихся задач)
  • 📌 Power Query (для обработки больших наборов данных)

Пример 1: Подсчёт ячеек с формулами (даже если они возвращают пустое значение):

=SUMPRODUCT(--(ФОРМУЛТЕКСТ(A1:A100)<>""))

Функция ФОРМУЛТЕКСТ возвращает текст формулы или "", если ячейка не содержит формулы.

Пример 2: Подсчёт ячеек с определённым форматированием (например, красный цвет текста) требует VBA. Вот простая функция для этого:

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

Dim cl As Range

Dim count As Long

count = 0

For Each cl In rng

If cl.Font.Color = color.Font.Color Then

count = count + 1

End If

Next cl

CountColoredCells = count

End Function

Чтобы использовать её:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Вернитесь в Excel и используйте функцию как обычную: =CountColoredCells(A1:A100; B1), где B1 — ячейка с нужным цветом.

Пример 3: В Power Query (доступен в Excel 2016+) подсчёт непустых ячеек выполняется через интерфейс:

  1. Выделите диапазон → Данные → Из таблицы/диапазона.
  2. В редакторе Power Query выберите столбец → Преобразовать → Статистика → Подсчёт значений.
  3. Сохраните запрос и загрузите данные обратно в Excel.
⚠️ Внимание: Пользовательские функции VBA могут замедлять работу книги, если применяются к большим диапазонам. Для оптимизации ограничьте диапазон анализируемых ячеек или используйте Application.Volatile только при необходимости.

Сравнительная таблица методов подсчёта

Метод Поддерживаемые данные Учитывает скрытые строки Работает с формулами Пример использования
COUNTA Любые непустые данные (включая ошибки) Да Игнорирует формулы, возвращающие "" =COUNTA(A1:A100)
COUNTIF с "*" Любые непустые данные (включая "" от формул) Да Учитывает все формулы =COUNTIF(A1:A100; "*")
SUMPRODUCT Любые данные (с гибкими условиями) Да Учитывает формулы =SUMPRODUCT(--(A1:A100<>""))
ПРОМЕЖУТОЧНЫЕ.ИТОГИ Любые непустые данные Нет (только видимые) Игнорирует формулы, возвращающие "" =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; A1:A100)
VBA-функция Любые данные (включая форматирование) Зависит от кода Учитывает формулы =CountColoredCells(A1:A100; B1)

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

Почему COUNTA считает пустые ячейки, если в них формулы?

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

=SUMPRODUCT(--(LEN(A1:A100)>0))

Эта формула проверяет фактическое содержимое ячейки, а не её статус.

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

Если ваш диапазон постоянно обновляется (например, новые данные добавляются в конец списка), используйте комбинацию INDEX и MATCH для определения последней непустой ячейки:

=COUNTA(A1:INDEX(A:A; MATCH(9,99E+307; A:A)))

Здесь MATCH(9,99E+307; A:A) находит последнюю числовую ячейку в столбце A, а INDEX формирует диапазон от A1 до этой ячейки.

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

В стандартном Excel нет функции для подсчёта по цвету без макросов. Однако можно использовать условное форматирование + ПРОМЕЖУТОЧНЫЕ.ИТОГИ:

  1. Примените условное форматирование к диапазону (например, красный цвет для значений >100).
  2. Отфильтруйте данные по этому цвету (Данные → Фильтр → Фильтр по цвету).
  3. Используйте =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; A1:A100) для подсчёта видимых ячеек.
Чем COUNTIF отличается от COUNTIFS?

COUNTIF работает с одним критерием в одном диапазоне, а COUNTIFS позволяет задавать несколько критериев для нескольких диапазонов. Например:

=COUNTIFS(A1:A100; "*"; B1:B100; ">10")

Эта формула посчитает строки, где столбец A не пустой, и одновременно столбец B содержит число >10.

Как посчитать заполненные ячейки в Google Таблицах?

В Google Sheets доступны те же функции, что и в Excel, но есть нюансы:

  • 🔹 COUNTA работает аналогично, но поддерживает регулярные выражения в COUNTIF (например, =COUNTIF(A1:A100; ".*ов$") для текста, оканчивающегося на "ов").
  • 🔹 Функция ARRAYFORMULA заменяет формулы массива (вводить через Ctrl+Shift+Enter не нужно).
  • 🔹 Для подсчёта видимых ячеек используйте =SUBTOTAL(3; A1:A100) (аналог ПРОМЕЖУТОЧНЫЕ.ИТОГИ).