Подсчёт выборочных ячеек в Microsoft Excel — одна из самых востребованных операций при работе с данными. Без этого навыка невозможно анализировать продажи, фильтровать клиентские базы или контролировать выполнение задач. Но если простой подсчёт всех ячеек (СЧЁТ) интуитивно понятен, то выборочный анализ с условиями часто вызывает затруднения. Почему? Потому что Excel предлагает более 10 функций для этой задачи — от элементарных до продвинутых массивов, и выбор зависит от структуры данных, версии программы и даже личных предпочтений.
Многие пользователи допускают типичную ошибку: пытаются "в лоб" перебрать ячейки вручную или используют ФИЛЬТР с последующим подсчётом строк. Это не только долго, но и чревато погрешностями. Между тем, правильно подобранная формула сэкономит часы работы и исключит человеческий фактор. В этой статье разберём 7 проверенных методов — от базовых до профессиональных, с примерами для Excel 2010–2023 и Excel Online. Особое внимание уделим распространённым ловушкам, из-за которых формулы возвращают #ЗНАЧ! или #ДЕЛ/0!.
Если вы никогда не работали с условными функциями, начните с раздела про СЧЁТЕСЛИ — это основа, на которой строятся все остальные методы. Опытным пользователям рекомендуем сразу перейти к формулам массивов или динамическим диапазонам, которые позволяют обрабатывать данные в реальном времени без промежуточных вычислений.
1. Базовый подсчёт: функция СЧЁТЕСЛИ
Функция СЧЁТЕСЛИ (COUNTIF в английской версии) — самый простой способ посчитать ячейки, соответствующие одному критерию. Она работает с текстом, числами, датами и даже логическими значениями. Синтаксис минималистичен:
=СЧЁТЕСЛИ(диапазон; критерий)
Например, чтобы посчитать количество ячеек со значением "Да" в столбце A1:A100, используйте:
=СЧЁТЕСЛИ(A1:A100; "Да")
Ключевые особенности СЧЁТЕСЛИ:
- 🔹 Критерий можно задавать как текст (
"Привет"), число (100), выражение (">50") или ссылку на ячейку (A1). - 🔹 Функция нечувствительна к регистру:
"да"и"ДА"будут подсчитаны одинаково. - 🔹 Поддерживает подстановочные знаки:
"*"(любой набор символов) и"?"(один символ). Пример:=СЧЁТЕСЛИ(A1:A10; "*ов")найдёт все фамилии на "-ов".
⚠️
Внимание: Если критерий — текст длиной более 255 символов,СЧЁТЕСЛИвернёт ошибку#ЗНАЧ!. В этом случае используйтеСЧЁТЕСЛИМНили разбейте условие на части.
Пример с датами: подсчёт записей за конкретный день. Предположим, в столбце B хранятся даты в формате ДД.ММ.ГГГГ. Чтобы посчитать строки с датой "15.05.2026", используйте:
=СЧЁТЕСЛИ(B1:B100; "15.05.2026")
Но если дата хранится как число (например, 45415 для 15.05.2026), формула не сработает. В этом случае критерий нужно задавать как дату в кавычках или использовать функцию ДАТА:
=СЧЁТЕСЛИ(B1:B100; ДАТА(2026;5;15))
2. Множественные условия: СЧЁТЕСЛИМН
Когда нужно учитывать несколько критериев одновременно, на помощь придёт СЧЁТЕСЛИМН (COUNTIFS). Эта функция проверяет соответствие всем условиям и подсчитывает только те ячейки, которые удовлетворяют всем критериям.
Синтаксис:
=СЧЁТЕСЛИМН(диапазон1; критерий1; [диапазон2; критерий2]; ...)
Максимальное количество пар "диапазон-критерий" — 127 (в Excel 2019 и новее).
Пример: подсчёт продаж товара "Ноутбук" в регионе "Москва" за 2026 год. Предположим, данные хранятся в таблице:
| Товар | Регион | Дата | Сумма |
|---|---|---|---|
| Ноутбук | Москва | 12.01.2026 | 50000 |
| Монитор | СПб | 15.02.2026 | 20000 |
| Ноутбук | Москва | 10.03.2026 | 45000 |
Формула будет такой:
=СЧЁТЕСЛИМН(A2:A100; "Ноутбук"; B2:B100; "Москва"; C2:C100; ">01.01.2026")
⚠️
Внимание: Диапазоны вСЧЁТЕСЛИМНдолжны быть одинакового размера, иначе Excel вернёт ошибку#ЗНАЧ!. Если столбцы имеют разное количество строк, используйте абсолютные ссылки ($A$2:$A$100) или выровняйте диапазоны.
Продвинутый трюк: комбинирование с другими функциями. Например, подсчёт ячеек, где сумма продаж больше среднего значения:
=СЧЁТЕСЛИМН(D2:D100; ">="&СРЗНАЧ(D2:D100))
Здесь СРЗНАЧ вычисляет среднее, а СЧЁТЕСЛИМН считает строки с суммой выше этого значения.
3. Подсчёт цветных ячеек: обходной путь
Excel не имеет встроенной функции для подсчёта ячеек по цвету заполнения. Однако эту задачу можно решить тремя способами:
1. Фильтрация по цвету (ручной метод):
- Выделите диапазон → Главная → Сортировка и фильтр → Фильтр.
- Нажмите на стрелку фильтра → Фильтр по цвету → выберите нужный цвет.
- Количество отфильтрованных строк будет видно в строке состояния (внизу окна).
2. 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
Чтобы использовать:
- Нажмите Alt+F11, вставьте код в модуль.
- В ячейке введите: =CountByColor(A1:A100; B1), где B1 — ячейка с образцом цвета.
3. Условное форматирование + вспомогательный столбец (универсальный метод):
- Создайте правило условного форматирования для ячеек (например, красный фон для значений < 0).
- Добавьте вспомогательный столбец с формулой:
=ЕСЛИ(И(A1<0; GET.CELL(38;!A1)=3); 1; 0)
(Примечание: 1. Выделите ячейку (например, X1) и присвойте ей имя "ColorCheck" через 2. Во вспомогательном столбце введите: 3. Скопируйте формулу вниз и просуммируйте столбец. ⚠️ Метод работает только для цветов, назначенных через условное форматирование, а не вручную.GET.CELL требует именованного диапазона, настройка сложная — подробности в спойлере.)
Как настроить GET.CELL для подсчёта цветов
Формулы → Диспетчер имён.
=ЕСЛИ(И(A1<0; ColorCheck=3); 1; 0), где 3 — код красного цвета в Excel.
⚠️
Внимание: Цвета, назначенные вручную (через Заливка), не могут быть подсчитаны формулами без VBA. Если вам часто приходится работать с ручной заливкой, рассмотрите возможность использования условного форматирования вместо неё.
4. Динамические диапазоны: СЧЁТЕСЛИ + ДВССЫЛ
Если ваши данные постоянно обновляются (например, ежедневные продажи), статичные диапазоны (A1:A100) становятся неудобными. Решение — динамические диапазоны, которые автоматически расширяются при добавлении новых строк.
Комбинация СЧЁТЕСЛИ + ДВССЫЛ (INDIRECT) позволяет создать гибкие формулы. Пример:
=СЧЁТЕСЛИ(ДВССЫЛ("A2:A" & СЧЁТЗ(A:A)); "Да")
Здесь:
- СЧЁТЗ(A:A) считает все непустые ячейки в столбце A.
- ДВССЫЛ формирует диапазон от A2 до последней заполненной строки.
Альтернатива — структурированные ссылки в таблицах Excel:
1. Преобразуйте диапазон в таблицу (Ctrl+T).
2. Используйте имя столбца в формуле:
=СЧЁТЕСЛИ(Таблица1[Столбец1]; "Да")
Теперь при добавлении строк в таблицу диапазон будет расширяться автоматически.
Критическая деталь: ДВССЫЛ — вольнодумец (volatile function), то есть пересчитывается при любом изменении в книге, что может тормозить большие файлы. В таблицах Excel этот недостаток отсутствует.
☑️ Подготовка динамического подсчёта
5. Продвинутый уровень: формулы массивов
Когда стандартные функции не справляются с сложными условиями, на сцену выходят формулы массивов. Они позволяют обрабатывать данные без промежуточных столбцов и выполнять операции, которые обычно требуют VBA.
Пример 1: Подсчёт ячеек, где значение в столбце A равно "Да", а в столбце B — больше 100.
Классический способ (со вспомогательным столбцом):
=СЧЁТЕСЛИ(C1:C100; 1)
где в C1 введена формула =И(A1="Да"; B1>100).
С формулой массива (без вспомогательного столбца):
{=СУММ(--(A1:A100="Да")*(B1:B100>100))}
⚠️ Важно: В старых версиях Excel (до 2019) формулу массива нужно вводить через Ctrl+Shift+Enter. В Excel 365 и 2021 достаточно нажать Enter.
Пример 2: Подсчёт уникальных значений с условием. Допустим, нужно посчитать количество уникальных товаров в регионе "Москва":
{=СУММ(1/СЧЁТЕСЛИМН(A2:A100; A2:A100; B2:B100; "Москва"))}
Здесь:
- СЧЁТЕСЛИМН считает вхождения каждого товара в Москве.
- 1/... преобразует результат в дробь (уникальные значения дадут 1, дубли — меньше 1).
- СУММ складывает все единицы.
⚠️
Внимание: Формулы массивов могут значительно замедлить работу книги, если применены к большим диапазонам (более 10 000 строк). Оптимизируйте их или используйте Power Query для сложных вычислений.
6. Подсчёт с частичным совпадением: поиск по шаблону
Иногда нужно посчитать ячейки, где текст частично совпадает с образцом. Например, все email-адреса с доменом "@gmail.com" или телефоны с кодом "+7".
Для этого используйте подстановочные знаки в СЧЁТЕСЛИ:
- 🔍
""— любой набор символов (включая пустую строку). Пример:=СЧЁТЕСЛИ(A1:A100; "@gmail.com")найдёт все адреса на Gmail. - 🔍
"?"— ровно один символ. Пример:=СЧЁТЕСЛИ(A1:A100; "???-??-??")подсчитает номера в форматеXXX-XX-XX. - 🔍
"~"— экранирование символов. Если нужно найти именно""или"?", используйте:=СЧЁТЕСЛИ(A1:A100; "~").
Для более гибкого поиска применяйте регулярные выражения через Power Query или VBA. Например, чтобы посчитать ячейки с телефонными номерами в формате +7 (XXX) XXX-XX-XX:
1. Импортируйте данные в Power Query (Данные → Получить данные → Из таблицы/диапазона).
2. Добавьте пользовательский столбец с формулой:
= Text.Match([Столбец1]; "\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}")
3. Отфильтруйте строки, где результат true, и посчитайте их количество.
⚠️
Внимание: Подстановочные знаки"*"и"?"вСЧЁТЕСЛИработают только с текстом. Для чисел используйте операторы сравнения (">100","<50").
7. Ошибки и их решения: почему формулы не работают
Даже опытные пользователи сталкиваются с ошибками при подсчёте ячеек. Рассмотрим топ-5 проблем и способы их устранения:
| Ошибка | Причина | Решение |
|---|---|---|
#ИМЯ? | Опечатка в имени функции или неверный синтаксис. | Проверьте регистр (например, СЧЁТЕСЛИ, а не счётесли). В английской версии используйте COUNTIF. |
#ЗНАЧ! | Неверный тип данных в критерии (например, текст вместо числа). | Убедитесь, что критерий соответствует формату ячеек. Для дат используйте ДАТА(). |
#ДЕЛ/0! | Деление на ноль в формуле массива. | Добавьте проверку: =ЕСЛИОШИБКА(СУММ(1/СЧЁТЕСЛИ(...)); 0). |
| Неправильный результат | Диапазоны в СЧЁТЕСЛИМН разного размера. | Выровняйте диапазоны или используйте абсолютные ссылки ($A$1:$A$100). |
| Формула не обновляется | Отключён автоматический пересчёт. | Включите в Формулы → Параметры вычислений → Автоматически. |
Особый случай: пустые ячейки. Функция СЧЁТЕСЛИ игнорирует их по умолчанию, но если нужно посчитать именно пустые клетки, используйте:
=СЧЁТЕСЛИ(A1:A100; "")
Для подсчёта непустых ячеек подходит СЧЁТЗ:
=СЧЁТЗ(A1:A100)
Критическая ошибка: если в ячейке формула, возвращающая пустую строку (=""), СЧЁТЕСЛИ посчитает её как пустую, а СЧЁТЗ — как непустую. Чтобы посчитать действительно пустые ячейки (без формул), используйте: =СЧИТАТЬПУСТОТЫ(A1:A100).
FAQ: Частые вопросы по подсчёту ячеек
Можно ли в СЧЁТЕСЛИ использовать несколько критериев для одного диапазона?
Нет, СЧЁТЕСЛИ поддерживает только один критерий. Для нескольких условий используйте:
- 🔹
СЧЁТЕСЛИМН— если условия относятся к разным диапазонам. - 🔹 Формулу массива:
{=СУММ(--(ИЛИ(A1:A100="Да"; A1:A100="Нет")))}— если условия относятся к одному диапазону.
Как посчитать ячейки с ошибками (#Н/Д, #ЗНАЧ!)?
Используйте функцию ЕОШИБКА в комбинации с СУММПРОИЗВ:
=СУММПРОИЗВ(--ЕОШИБКА(A1:A100))
Для подсчёта конкретной ошибки (например, #Н/Д):
=СУММПРОИЗВ(--ЕНД(A1:A100))
Почему СЧЁТЕСЛИМН возвращает 0, хотя данные есть?
Вероятные причины:
- 🔹 Несовпадение форматов: критерий задан как текст (
"100"), а в ячейках — числа (100). - 🔹 Скрытые символы: пробелы или непечатаемые знаки в данных. Используйте
СЖПРОБЕЛЫдля очистки. - 🔹 Диапазоны разного размера: проверьте, что все диапазоны в
СЧЁТЕСЛИМНимеют одинаковое количество строк.
Как посчитать ячейки, где текст начинается с большой буквы?
Используйте формулу массива:
{=СУММ(--(КОДСИМВ(ЛЕВСИМВ(A1:A100))>=КОДСИМВ("А"))*(КОДСИМВ(ЛЕВСИМВ(A1:A100))<=КОДСИМВ("Я")))}
Для английских букв замените "А" и "Я" на "A" и "Z".
Можно ли посчитать ячейки по цвету шрифта, а не заливки?
Да, но только через VBA. Пример макроса:
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
Использование: =CountByFontColor(A1:A100; B1), где B1 — ячейка с образцом цвета шрифта.