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

Почему подсчёт ячеек в Excel — это не только про числа

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

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

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

1. Базовые функции: COUNT, COUNTA и COUNTBLANK

Три кита, на которых держится подсчёт в Excel. Их легко перепутать, но у каждой — своё строгое предназначение.

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

Пример из практики: выгрузка данных из часто содержит "пустые" ячейки с неразрывными пробелами (CHAR(160)). COUNTA посчитает их как непустые, а COUNTBLANK — нет. Чтобы очистить такие артефакты, используйте =ПЕЧСИМВ(A1).

ФункцияСчитаетИгнорируетПример результата для диапазона A1:A3 с значениями 5, "текст", ""
COUNTЧисла, даты, времяТекст, пустые ячейки, ошибки1
COUNTAВсе непустые ячейкиТолько truly пустые2
COUNTBLANKПустые ячейки и ""Любые непустые значения1
⚠️ Внимание: Если в ячейке формула возвращает 0, COUNT посчитает её, а COUNTA — нет. Чтобы включить нули в подсчёт непустых ячеек, используйте =СУММПРОИЗВ(--(A1:A10<>"")).
📊 Какую функцию подсчёта вы используете чаще?
COUNT
COUNTA
COUNTBLANK
COUNTIF/COUNTIFS
Другую

2. Подсчёт по условию: 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(A1:A10; 10).
  • 📌 Подстановочные знаки: (любое количество символов) и ? (один символ). Пример: =COUNTIF(A1:A10; "отчёт") найдёт "отчёт", "отчётность", "отчёт_2026" и т.д.
  • 📌 Для дат используйте функцию ДАТА: =COUNTIF(A1:A10; ">="&ДАТА(2026;1;1)).

Лайфхак: если нужно посчитать ячейки с ошибками (например, #Н/Д), используйте =СУММПРОИЗВ(--ЕОШ(A1:A10)). Стандартные функции это сделать не умеют.

Убедитесь, что диапазоны одинакового размера|Проверьте регистр в текстовых условиях (Excel чувствителен к "Да" и "да")|Используйте абсолютные ссылки ($A$1:$A$10), если копируете формулу|Тестируйте условия на небольшом диапазоне перед применением ко всей таблице-->

3. Подсчёт уникальных значений и дубликатов

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

  • 🦄 UNIQUE + ROWS (в Excel 365 и 2021): =ROWS(UNIQUE(A2:A100)) вернёт количество уникальных значений в диапазоне.
  • 🔄 Для подсчёта дубликатов: =СУММПРОИЗВ(--(СЧЁТЕСЛИ(A2:A100; A2:A100)>1)). Эта формула массива считает, сколько значений встречается более одного раза.
  • 📊 Для старых версий Excel: комбинация СЧЁТЕСЛИ + вспомогательный столбец с формулой =ЕСЛИ(СЧЁТЕСЛИ($A$2:$A$100; A2)>1; "Дубликат"; "").

Критичный нюанс: функция UNIQUE игнорирует пустые ячейки, а СЧЁТЕСЛИ — нет. Если в данных есть пробелы, предварительно очистите их с помощью =ПЕЧСИМВ(A1) или =СЖПРОБЕЛЫ(A1).

Пример из практики: при анализе продаж вы хотите узнать, сколько уникальных городов представлено в базе клиентов. Если использовать =СЧЁТЕСЛИ(диапазон; диапазон), результат будет завышен из-за повторяющихся городов. Правильный вариант — =ROWS(UNIQUE(диапазон)).

⚠️ Внимание: В Excel до 2019 года формулы массива (как СУММПРОИЗВ для уникальных значений) требуют подтверждения клавишами Ctrl+Shift+Enter. В новых версиях это не нужно, но формулы становятся "динамическими массивами" и могут "проливаться" на соседние ячейки.
Почему СЧЁТЕСЛИ не подходит для уникальных значений?

Функция СЧЁТЕСЛИ(диапазон; критерий) возвращает количество ячеек, соответствующих критерию. Если использовать её для подсчёта уникальных значений (например, =СЧЁТЕСЛИ(A:A; A1)), она вернёт количество повторений каждого элемента, но не количество уникальных элементов в целом. Для этого нужны формулы массива или UNIQUE в новых версиях Excel.

4. Подсчёт видимых ячеек после фильтрации

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

  • 👁️ ПРОМЕЖУТОЧНЫЕ.ИТОГИ(функция; диапазон) — универсальная функция для работы с отфильтрованными данными. Для подсчёта используйте:
    =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(2; A2:A100)  ' 2 = COUNT (числа)
    

    =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; A2:A100) ' 3 = COUNTA (непустые ячейки)

  • 🔍 АГРЕГАТ — альтернатива с расширенными опциями. Пример: =АГРЕГАТ(3; 5; A2:A100), где 5 игнорирует скрытые строки.

Важно: эти функции работают только с ручной фильтрацией (через меню Данные → Фильтр). Если строки скрыты вручную (правый клик → "Скрыть"), они не помогут. В этом случае используйте VBA или Power Query.

Пример: у вас отчёт по продажам с фильтром по региону. Чтобы посчитать количество видимых сделок, используйте =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; B2:B1000), где столбец B содержит суммы продаж. Если применить обычный COUNTA, результат будет завышен.

5. Продвинутые техники: формулы массива и LAMBDA

Когда стандартных функций недостаточно, на помощь приходят формулы массива и пользовательские функции LAMBDA (доступны в Excel 365). Рассмотрим несколько нетривиальных задач:

5.1. Подсчёт ячеек с несколькими условиями (И/ИЛИ)

Задача: посчитать ячейки, где значение >100 И <500, ИЛИ равно "Особое". Решение:

=СУММ(

--((A1:A10>100)*(A1:A10<500)) +

--(A1:A10="Особое")

)

5.2. Подсчёт по частичному совпадению

Нужно найти ячейки, содержащие одно из нескольких слов (например, "отчёт" или "анализ"). Используйте:

=СУММПРОИЗВ(

--НЕОШ(ПОИСК("отчёт"; A1:A10)) +

--НЕОШ(ПОИСК("анализ"; A1:A10))

)

5.3. Пользовательская функция LAMBDA для сложной логики

Создайте свою функцию для повторного использования. Пример: подсчёт ячеек, где текст начинается с заглавной буквы:

=LAMBDA(диапазон;

СУММПРОИЗВ(

--(КОДСИМВ(ЛЕВСИМВ(диапазон;1)) >= КОДСИМВ("А")) *

--(КОДСИМВ(ЛЕВСИМВ(диапазон;1)) <= КОДСИМВ("Я"))

)

)(A1:A10)

Эти методы требуют хорошего понимания синтаксиса, но открывают возможности для решения 90% нестандартных задач без VBA.

⚠️ Внимание: Формулы массива могут значительно замедлить работу книги, если применять их к большим диапазонам (10 000+ строк). Оптимизируйте диапазоны или используйте Power Query для предварительной обработки данных.

6. Подсчёт по цвету ячейки (без VBA)

Excel не имеет встроенной функции для подсчёта ячеек по цвету фона или шрифта, но есть обходные пути:

6.1. Метод с условным форматированием и фильтром

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

6.2. Метод с вспомогательным столбцом

Если цвет назначен вручную:

  1. Добавьте столбец с формулой, которая возвращает уникальный идентификатор для каждого цвета (например, =ПСТР(ЯЧЕЙКА("цвет"; A1); 2; 6) — вернёт HEX-код цвета).
  2. Используйте COUNTIF для подсчёта по этому идентификатору.

Ограничения:

  • 🚫 Функция ЯЧЕЙКА("цвет"; ...) работает только для цветов, назначенных вручную, а не через условное форматирование.
  • 🚫 В Excel Online этот метод не работает.

Для полноценной работы с цветами потребуется VBA-макрос. Пример кода:

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

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

7. Автоматизация: Power Query и VBA

Когда данных много (десятки тысяч строк) или задачи повторяются, ручной подсчёт становится неэффективным. Рассмотрим инструменты для автоматизации:

7.1. Power Query (Get & Transform)

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

  • 🔄 Обрабатывает миллионы строк без замедления.
  • 📊 Сохраняет шаги преобразования для повторного использования.
  • 🔗 Подключается к внешним источникам (SQL, CSV, веб).

Пример: подсчёт уникальных значений в столбце:

  1. Выделите данные → Данные → Из таблицы/диапазона.
  2. В редакторе Power Query выберите столбец → Главная → Группировка.
  3. Укажите операцию Count Rows.

7.2. VBA для сложных задач

Примеры макросов:

Подсчёт ячеек с формулами (даже если результат пустой):

Function CountFormulas(rng As Range) As Long

Dim cell As Range

Dim count As Long

count = 0

For Each cell In rng

If cell.HasFormula Then count = count + 1

Next cell

CountFormulas = count

End Function

Подсчёт видимых ячеек после фильтра (альтернатива ПРОМЕЖУТОЧНЫЕ.ИТОГИ):

Function CountVisible(rng As Range) As Long

Dim cell As Range

Dim count As Long

count = 0

For Each cell In rng

If Not cell.EntireRow.Hidden Then count = count + 1

Next cell

CountVisible = count

End Function

Чтобы использовать макросы:

  1. Нажмите Alt+F11 для открытия редактора VBA.
  2. Вставьте код в модуль (Insert → Module).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
⚠️ Внимание: Макросы могут быть заблокированы настройками безопасности Excel. Чтобы разрешить их выполнение, перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов и выберите "Включить все макросы" (не рекомендуется для файлов из ненадёжных источников).

FAQ: Частые вопросы по подсчёту ячеек

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

Используйте COUNTIFS с функцией ДАТА:

=COUNTIFS(A1:A10; ">="&ДАТА(2026;1;1); A1:A10; "<="&ДАТА(2026;12;31))

Это посчитает даты в 2026 году. Для текущего месяца:

=COUNTIFS(A1:A10; ">="&ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ()); 1); A1:A10; "<="&КОНМЕСЯЦА(СЕГОДНЯ();0))
Почему COUNTIF не считает ячейки с формулами, возвращающими пустую строку?

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

=СУММПРОИЗВ(--(A1:A10=""))

Или для подсчёта ячеек с формулами (даже пустыми):

=СУММПРОИЗВ(--(ЕПУСТО(A1:A10)=ЛОЖЬ); --(ЕФОРМУЛА(A1:A10)))

Функция ЕФОРМУЛА проверяет, содержит ли ячейка формулу.

Как посчитать количество строк в таблице Excel, игнорируя заголовки?

Если таблица оформлена как Таблица Excel (Ctrl+T), используйте:

=СТРОКА(Таблица1[#Все]) - 1

Где Таблица1 — имя вашей таблицы. Минус 1 исключает строку заголовка.

Для обычного диапазона:

=СЧЁТЗ(A:A) - 1

Где A:A — столбец с данными, а -1 исключает заголовок в первой строке.

Можно ли посчитать ячейки по формату (например, жирный шрифт)?

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

Function CountBold(rng As Range) As Long

Dim cell As Range

Dim count As Long

count = 0

For Each cell In rng

If cell.Font.Bold Then count = count + 1

Next cell

CountBold = count

End Function

Использование: =CountBold(A1:A100). Аналогично можно проверять Font.Italic, Font.Underline и другие свойства.

Как посчитать количество листов в книге Excel?

Формулой это сделать нельзя, но есть 3 способа:

  1. VBA: =Листы() (требуется макрос).
  2. Ручной подсчёт: правый клик на стрелках листа → "Выбрать все листы" → количество отобразится в строке состояния.
  3. Power Query: загрузите данные о листах через Excel.CurrentWorkbook().

Для VBA-решения добавьте эту функцию в модуль:

Function SheetCount() As Long

SheetCount = ThisWorkbook.Worksheets.Count

End Function

Использование: =SheetCount().