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

Почему подсчёт данных в Excel — это основа анализа

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

К счастью, в Excel есть целый арсенал функций для подсчёта: от простейшей COUNT до продвинутых COUNTIFS и SUMPRODUCT. Но как выбрать правильную? Когда использовать COUNTA, а когда COUNTBLANK? И почему иногда формула возвращает неожиданный результат? В этой статье разберём все нюансы — от базовых примеров до редких приёмов, которые знают только опытные пользователи.

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

Базовые функции подсчёта: COUNT, COUNTA, COUNTBLANK

Начнём с трёх «китов», на которых держится подсчёт в Excel. Каждая из этих функций решает свою задачу, и их часто путают.

  • 🔢 COUNT(диапазон) — считает только числовые значения, включая даты (они хранятся как числа). Текст, логические значения (ИСТИНА/ЛОЖЬ) и пустые ячейки игнорируются.
  • 📝 COUNTA(диапазон) — учитывает все непустые ячейки, независимо от типа данных. Подходит для подсчёта строк с любым содержимым.
  • COUNTBLANK(диапазон) — наоборот, считает пустые ячейки, включая те, где формула возвращает "" (но не 0!).

Пример: если в диапазоне A1:A5 содержатся значения 10, "текст", ИСТИНА, пустая ячейка и 05.05.2026, то:

ФункцияФормулаРезультатПояснение
COUNT=COUNT(A1:A5)2Считает только 10 и дату 05.05.2026 (как число)
COUNTA=COUNTA(A1:A5)4Игнорирует только пустую ячейку
COUNTBLANK=COUNTBLANK(A1:A5)1Считает только пустую ячейку
⚠️ Внимание: Функция COUNT не учитывает ячейки с текстом, даже если там записано число в кавычках (например, "100"). Чтобы такие значения посчитать, используйте COUNTA или преобразуйте текст в число с помощью VALUE.

Практический совет: если вам нужно посчитать все строки в таблице, включая пустые, используйте функцию ROWS (например, =ROWS(A1:A100) вернёт 100). Это полезно для проверки целостности данных перед импортом в другие системы.

📊 Какую функцию подсчёта вы используете чаще всего?
COUNT
COUNTA
COUNTIF
COUNTBLANK
Другую

Подсчёт по условию: COUNTIF и COUNTIFS

Когда нужно посчитать не все ячейки, а только те, которые соответствуют определённому критерию, на помощь приходят COUNTIF и COUNTIFS. Первая работает с одним условием, вторая — с несколькими.

Синтаксис:

  • 🔍 COUNTIF(диапазон; условие) — например, =COUNTIF(B2:B100; ">50") посчитает ячейки со значениями больше 50.
  • 🔍🔍 COUNTIFS(диапазон1; условие1; [диапазон2; условие2]; ...) — позволяет задавать несколько критериев. Например, =COUNTIFS(A2:A100; "Да"; B2:B100; ">1000") посчитает строки, где в колонке A стоит "Да", а в колонке B — число больше 1000.

Условия можно задавать разными способами:

  • 📌 Текстовые значения: =COUNTIF(A1:A10; "Принято") (регистр не важен).
  • 📌 Числовые диапазоны: =COUNTIF(B1:B10; ">10"), =COUNTIF(B1:B10; "<>0") (не равно нулю).
  • 📌 Подстановочные знаки: =COUNTIF(C1:C10; "яблоко*") посчитает все ячейки, начинающиеся на "яблоко".
  • 📌 Ссылки на ячейки: =COUNTIF(A1:A10; D1), где в D1 записано условие (например, "Да").

Пример из практики: допустим, у вас есть таблица продаж с колонками Менеджер, Сумма и Статус. Чтобы посчитать, сколько сделок на сумму >5000$ закрыл менеджер Иванов со статусом "Оплачено", формула будет:

=COUNTIFS(A2:A100; "Иванов"; B2:B100; ">5000"; C2:C100; "Оплачено")
⚠️ Внимание: Если в условии используете текст с пробелами или специальными символами (например, "Да (утверждено)"), обязательно берите его в кавычки. Иначе Excel выдаст ошибку #NAME?.

Убедиться, что диапазоны одинакового размера

Проверить регистр текста в условиях (если важно)

Заэкранировать специальные символы (например, ~ вместо )

Проверить, нет ли скрытых пробелов в данных

-->

Подсчёт уникальных значений: UNIQUE + COUNTA или SUMPRODUCT

Частая задача — посчитать, сколько уникальных значений содержится в диапазоне. Например, сколько разных городов представлено в списке клиентов или сколько уникальных товаров было продано. В старых версиях Excel для этого приходилось использовать сложные формулы, но сейчас есть более простые способы.

В Excel 365 и Excel 2021 появилась функция UNIQUE, которая упрощает задачу:

=COUNTA(UNIQUE(A2:A100))

Эта формула сначала извлекает все уникальные значения из диапазона A2:A100, а затем считает их количество. Если в данных есть пустые ячейки, их можно исключить с помощью FILTER:

=COUNTA(UNIQUE(FILTER(A2:A100; A2:A100<>"")))

Для более старых версий Excel (2019 и ниже) придётся использовать SUMPRODUCT с массивами:

=SUMPRODUCT(1/COUNTIF(A2:A100; A2:A100 & ""))

Эта формула работает так: COUNTIF считает, сколько раз каждое значение встречается в диапазоне, а SUMPRODUCT суммирует единицы, делённые на эти числа (то есть каждое уникальное значение учитывается ровно один раз).

Важно: если в данных есть ошибки (например, #N/A), формула вернёт ошибку. Чтобы этого избежать, оберните её в IFERROR:

=IFERROR(SUMPRODUCT(1/COUNTIF(A2:A100; A2:A100 & "")), 0)
Почему формула с SUMPRODUCT может тормозить?

Формулы массивов (как эта) пересчитываются дольше обычных, особенно на больших диапазонах (10 000+ строк).

Если таблица обновляется часто, замените её на UNIQUE + COUNTA (в Excel 365) или используйте Power Query для предварительной обработки данных.

Подсчёт с несколькими критериями: расширенные приёмы

Иногда COUNTIFS недостаточно — например, когда нужно посчитать значения, соответствующие одному из нескольких условий (логическое ИЛИ), или когда условия зависят от других данных. Здесь помогут комбинации функций.

Пример 1: Подсчёт ячеек, где значение равно "Да" ИЛИ "Одобрено". В Excel 365 можно использовать COUNTIF с суммированием:

=COUNTIF(A2:A100; "Да") + COUNTIF(A2:A100; "Одобрено")

В старых версиях подойдёт SUMPRODUCT:

=SUMPRODUCT(--((A2:A100="Да")+(A2:A100="Одобрено")))

Пример 2: Подсчёт строк, где в колонке B значение больше 100, а в колонке C — либо "Активен", либо "В работе". Здесь комбинируем COUNTIFS с суммой:

=COUNTIFS(B2:B100; ">100"; C2:C100; "Активен") + COUNTIFS(B2:B100; ">100"; C2:C100; "В работе")

Пример 3: Динамический подсчёт по условию из другой ячейки. Допустим, в E1 пользователь вводит минимальную сумму, а в E2 — категорию товара. Формула будет:

=COUNTIFS(B2:B100; ">="&E1; C2:C100; E2)

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

=COUNTIF(A2:A100; "яблоко")  
=SUMPRODUCT(--ISNUMBER(SEARCH({"яблоко";"груша";"банан"}; A2:A100)))

Эта формула проверяет каждое слово из массива и суммирует совпадения.-->

Подсчёт цветных ячеек и ячеек с форматированием

Стандартные функции Excel не умеют считать ячейки по цвету заливки или шрифта. Для этого потребуется VBA (макрос) или обходной путь с фильтрацией.

Способ 1: Фильтрация + COUNTIF

  1. Выделите диапазон данных.
  2. Нажмите Данные → Фильтр (или Ctrl+Shift+L).
  3. Откройте выпадающий список в колонке, кликните Фильтр по цвету и выберите нужный цвет заливки.
  4. Скопируйте видимые строки в новый лист и используйте COUNTA.

Способ 2: VBA-функция

Если вам часто нужно считать цветные ячейки, добавьте в проект следующую функцию:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль (Insert → Module).
  3. Добавьте код:
    Function CountByColor(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.Interior.Color = color.Interior.Color Then

    count = count + 1

    End If

    Next cl

    CountByColor = count

    End Function

  4. Теперь в ячейке можно использовать формулу =CountByColor(A1:A100; D1), где в D1 — ячейка с нужным цветом заливки.
⚠️ Внимание: VBA-функции работают только в файлах с расширением .xlsm (с поддержкой макросов). Если вы сохраните файл как .xlsx, макросы перестанут работать, и формулы вернут ошибку #NAME?.

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

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

ОшибкаПричинаРешение
COUNT возвращает 0, хотя в ячейках есть числаЧисла хранятся как текст (например, после импорта из CSV)Используйте VALUE или умножьте на 1: =COUNT(VALUE(A1:A10))
COUNTIF не находит текстовое значениеЛишние пробелы в данных или условииОчистите данные с помощью TRIM: =COUNTIF(TRIM(A1:A10); "Да")
COUNTIFS возвращает #VALUE!Диапазоны разного размераПроверьте, что все диапазоны в формуле одинаковой длины
Формула тормозит на больших данныхИспользуются формулы массивов (например, с SUMPRODUCT)Замените на UNIQUE+COUNTA (в Excel 365) или используйте Power Query
COUNTBLANK считает ячейки с формулой ="" как пустыеФормула возвращает пустую строку, но ячейка не пустая техническиИспользуйте =COUNTIF(A1:A10; "") для точного подсчёта

Ещё одна распространённая проблема — скрытые символы в данных. Например, после импорта из или PDF в ячейках могут оставаться непечатаемые символы (например, CHAR(160) — неразрывный пробел). Чтобы их удалить, используйте:

=SUBSTITUTE(SUBSTITUTE(A1; CHAR(160); " "); CHAR(13); "")

Критическая ошибка: если вы используете COUNTIF с диапазоном, содержащим ошибки (#N/A, #VALUE! и др.), формула проигнорирует их. Но если нужно посчитать все ячейки, включая ошибочные, используйте =ROWS(диапазон) - COUNTBLANK(диапазон).

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

Как посчитать количество ячеек с ошибками (#N/A, #VALUE! и др.)?

Используйте формулу массива (введите с Ctrl+Shift+Enter в старых версиях Excel):

=SUMPRODUCT(--ISERROR(A1:A100))

В Excel 365 можно обойтись без массива:

=COUNTIF(A1:A100; "#N/A") + COUNTIF(A1:A100; "#VALUE!") + ...
Почему COUNTIF не считает даты?

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

=COUNTIF(DATEVALUE(A1:A10); ">01.01.2026")

Или используйте COUNT, так как она воспринимает даты как числа.

Как посчитать количество строк в фильтрованной таблице?

Функция SUBTOTAL умеет работать с видимыми строками после фильтрации. Используйте:

=SUBTOTAL(103; B2:B100)  

Для подсчёта всех строк (включая скрытые) используйте 102 вместо 103.

Можно ли посчитать количество ячеек по цвету шрифта?

Стандартными функциями — нет. Но можно написать VBA-функцию, аналогичную CountByColor, но проверяющую Font.Color вместо Interior.Color:

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

CountByFontColor = count

End Function

Используйте её так же, как и функцию для цвета заливки.

Как посчитать количество уникальных значений с учётом регистра?

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

=SUMPRODUCT(1/COUNTIF(A2:A100; A2:A100 & "" & ROW(A2:A100)))

Или в Excel 365:

=ROWS(UNIQUE(A2:A100 & ROW(A2:A100)))

Здесь мы добавляем номер строки к каждому значению, чтобы сделать его уникальным с учётом позиции.