Как посчитать количество значений по условию в Excel: от СЧЁТЕСЛИ до Power Query

Подсчёт количества ячеек, удовлетворяющих заданным критериям, — одна из самых востребованных задач в Microsoft Excel. Без этого навыка невозможно анализировать продажи, оценивать выполнение планов или фильтровать базы данных. Но как выбрать правильный инструмент среди десятков функций? Новичков часто сбивает с толку обилие вариантов: то ли использовать СЧЁТЕСЛИ, то ли комбинировать ФИЛЬТР с СТРОКА, то ли вообще обратиться к Power Query.

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

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

📊 Какой инструмент вы чаще используете для подсчёта данных?
Формулы (СЧЁТЕСЛИ, СУММЕСЛИ)
Фильтры и сводные таблицы
Power Query/Power Pivot
VBA-скрипты
Другой вариант

1. Базовая функция СЧЁТЕСЛИ: простое условие для одной колонки

Функция СЧЁТЕСЛИ (=COUNTIF() в английской версии) — самый простой способ посчитать количество ячеек, соответствующих одному критерию. Она работает с текстом, числами, датами и даже логическими значениями. Синтаксис минималистичен:

=СЧЁТЕСЛИ(диапазон; условие)

Например, чтобы узнать, сколько раз в столбце A2:A100 встречается слово "Да", используйте:

=СЧЁТЕСЛИ(A2:A100; "Да")

Но здесь есть подводные камни. Во-первых, СЧЁТЕСЛИ не различает регистр — "да", "ДА" и "Да" будут посчитаны как одно значение. Во-вторых, она игнорирует ошибки в ячейках (например, #Н/Д), но учитывает пустые строки, если условие — "<>0".

  • 📌 Текстовые условия: используйте кавычки — =СЧЁТЕСЛИ(B2:B50; "Отменено")
  • 📊 Числовые диапазоны: операторы сравнения пишутся в кавычках — =СЧЁТЕСЛИ(C2:C100; ">50")
  • 🗓️ Даты: формат должен совпадать с региональными настройками — =СЧЁТЕСЛИ(D2:D200; ">31.12.2023")
  • ⚠️ Подстановочные знаки: (любое количество символов) и ? (один символ) — =СЧЁТЕСЛИ(E2:E50; "при") найдёт "прибыль", "приход" и т.д.
⚠️ Внимание: Если в ячейках есть невидимые пробелы или символы переноса, СЧЁТЕСЛИ может их не учесть. Используйте =ПЕЧСИМВ(A2), чтобы очистить данные перед подсчётом.

2. СЧЁТЕСЛИМН: несколько условий в разных столбцах

Когда нужно посчитать строки, соответствующие нескольким критериям одновременно, на помощь приходит СЧЁТЕСЛИМН (=COUNTIFS()). В отличие от СЧЁТЕСЛИ, она позволяет анализировать данные из разных диапазонов. Синтаксис:

=СЧЁТЕСЛИМН(диапазон1; условие1; [диапазон2; условие2]; ...)

Классический пример: подсчёт продаж товара "Ноутбук" в регионе "Москва" за 2026 год. Предположим, что:

  • Столбец A — название товара
  • Столбец B — регион
  • Столбец C — дата продажи

Формула будет такой:

=СЧЁТЕСЛИМН(A2:A1000; "Ноутбук"; B2:B1000; "Москва"; C2:C1000; ">31.12.2023")

Важные нюансы:

  • 🔹 Порядок диапазонов: они должны быть одинаковой длины, иначе Excel вернёт ошибку #ЗНАЧ!.
  • 🔹 Логика "И": СЧЁТЕСЛИМН считает только строки, где все условия выполнены одновременно (в отличие от СУММЕСЛИМН, где можно эмулировать "ИЛИ").
  • 🔹 Динамические диапазоны: вместо A2:A1000 лучше использовать A2:A (весь столбец), если данные постоянно обновляются.

Убедитесь, что диапазоны одинакового размера|Проверьте регистр в текстовых условиях|Исключите пустые ячейки с помощью <>" "|Тестируйте формулу на небольшом фрагменте данных-->

3. Функция ФИЛЬТР + СТРОКА: гибкий подсчёт с динамическими массивами

В Excel 365 и Excel 2021 появился революционный подход — комбинация ФИЛЬТР (=FILTER()) и СТРОКА (=ROWS()). Этот метод позволяет:

  • 🔄 Применять несколько условий с логикой "ИЛИ" (через +)
  • 📈 Работать с динамическими диапазонами, которые автоматически обновляются
  • 🛠️ Использовать сложные критерии (например, регулярные выражения через Power Query)

Пример: подсчёт строк, где в столбце B указан "Регион1" или "Регион2", а в столбце C сумма больше 1000:

=СТРОКА(ФИЛЬТР(B2:C100; (B2:B100="Регион1")+(B2:B100="Регион2"); C2:C100>1000))

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

  1. Гибкость: можно комбинировать условия через * ("И") и + ("ИЛИ").
  2. Наглядность: функция ФИЛЬТР сама возвращает отфильтрованные данные, которые можно проверить.
  3. Производительность: на больших массивах работает быстрее, чем вложенные СЧЁТЕСЛИ.
⚠️ Внимание: В старых версиях Excel (до 2019) функция ФИЛЬТР недоступна. Альтернатива — использование СУММПРОИЗВ с двойным отрицанием (--) для эмуляции логики.
Как эмулировать ФИЛЬТР в Excel 2016?

Используйте комбинацию ИНДЕКС + ПОИСКПОЗ с вспомогательным столбцом формул. Например:

=ИНДЕКС($A$2:$A$100; НЕОШИБКА(ПОИСКПОЗ(1; --($B$2:$B$100="Условие1")*--($C$2:$C$100>100); 0)))

Эта формула вернёт первую строку, соответствующую двум условиям. Чтобы посчитать количество, оберните её в СЧЁТ или СТРОКА.

4. Условное форматирование + функция СЧЁТЦВЕТ: визуальный анализ

Если вам нужно не только посчитать значения, но и визуализировать их распределение, сочетание Условного форматирования и малоизвестной функции СЧЁТЦВЕТ (=GET.CELL в английской версии) может стать спасением. Этот метод полезен для:

  • 🎨 Быстрого анализа категорий (например, "выделить все ячейки с продажами > 1000 зелёным").
  • 📊 Подсчёта количества ячеек определённого цвета (да, Excel может это!).
  • 🔍 Выявления аномалий в данных (например, отрицательные значения в столбце с ценами).

Алгоритм действий:

  1. Выделите диапазон (например, A2:A100).
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите тип правила "Форматировать только ячейки, которые содержат".
  4. Задайте условие (например, "Значение больше 50") и назначьте цвет.
  5. Используйте функцию СЧЁТЦВЕТ (требует установки надстройки Morefunc или VBA-кода).

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

Function СЧЁТЦВЕТ(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

СЧЁТЦВЕТ = count

End Function

Чтобы ею воспользоваться:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (Insert → Module).
  3. Вернитесь в Excel и используйте формулу: =СЧЁТЦВЕТ(A2:A100; B2), где B2 — ячейка с образцом цвета.
⚠️ Внимание: Цвета, назначенные через условное форматирование, не фиксируются в свойстве Interior.Color. Для их подсчёта потребуется анализировать правила форматирования через VBA, что значительно сложнее.

5. Power Query: подсчёт с предварительной обработкой данных

Когда данные грязные (с дубликатами, опечатками, нестандартными разделителями), а условий для подсчёта десятки, на помощь приходит Power Query — инструмент ETL (Extract, Transform, Load), встроенный в Excel с 2016 года. Его преимущества:

  • 🧹 Очистка данных: удаление пробелов, замена текста, разделение столбцов.
  • 🔄 Многоэтапная фильтрация: можно применять условия последовательно.
  • 📊 Группировка: подсчёт уникальных значений с агрегацией (например, "количество заказов по клиентам").
  • Производительность: обработка миллионов строк без зависаний.

Пошаговая инструкция для подсчёта количества строк по условию:

  1. Выделите исходные данные и перейдите на вкладку Данные → Получение данных → Из таблицы/диапазона.
  2. В редакторе Power Query примените фильтры:
    • Щёлкните по стрелке в заголовке столбца → Текстовые фильтры → Равно (или Числовые фильтры → Больше).
    • Для нескольких условий используйте Главная → Добавить столбец → Пользовательский столбец с формулой на языке M.
  • После фильтрации перейдите на вкладку Главная → Закрыть и загрузить → Закрыть и загрузить в... и выберите "Таблица".
  • В результате получите новую таблицу только с отфильтрованными строками. Их количество можно подсчитать функцией =СЧЁТЗ.
  • Пример кода на языке M для пользовательского столбца (фильтрация строк, где столбец Status равен "Completed" и столбец Amount > 1000):

    = Table.SelectRows(#"Предыдущий шаг", each [Status] = "Completed" and [Amount] > 1000)
    Метод Сложность Гибкость Производительность на 100K строк Подходит для динамических данных
    СЧЁТЕСЛИ Одно условие ~0.5 сек Да
    СЧЁТЕСЛИМН ⭐⭐ Несколько условий ("И") ~1.2 сек Да
    ФИЛЬТР + СТРОКА ⭐⭐⭐ Любая логика ("И"/"ИЛИ") ~0.3 сек Да (только Excel 365/2021)
    Условное форматирование ⭐⭐⭐ Визуальный анализ ~2 сек (с VBA) Нет
    Power Query ⭐⭐⭐⭐ Полная предобработка ~0.1 сек Да (при обновлении запроса)

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

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

    1. Скрытые символы в ячейках

    Проблема: Формула =СЧЁТЕСЛИ(A2:A10; "Да") возвращает 0, хотя визуально в ячейках есть слово "Да".

    Решение: Используйте =ПЕЧСИМВ(A2) или =СЖПРОБЕЛЫ(A2), чтобы удалить невидимые символы. Альтернатива — поиск с подстановочными знаками: =СЧЁТЕСЛИ(A2:A10; "Да").

    2. Ошибки в диапазонах

    Проблема: #ЗНАЧ! при использовании СЧЁТЕСЛИМН с диапазонами разного размера.

    Решение: Проверьте длину диапазонов функцией =СТРОКА(A2:A10)-СТРОКА(A2)+1. Она должна возвращать одинаковое значение для всех аргументов.

    3. Пустые ячейки как ненулевые

    Проблема: =СЧЁТЕСЛИ(B2:B100; "<>0") считает пустые ячейки как соответствующие условию.

    Решение: Используйте =СЧЁТЕСЛИ(B2:B100; "<>0")-СЧЁТЕСЛИ(B2:B100; "") или =СЧЁТЕСЛИ(B2:B100; ">0").

    4. Даты в текстовом формате

    Проблема: =СЧЁТЕСЛИ(C2:C100; ">31.12.2023") не работает, потому что даты хранятся как текст.

    Решение: Преобразуйте столбец в формат даты (Формат ячеек → Дата) или используйте =ДАТАЗНАЧ(C2) в вспомогательном столбце.

    5. Регистрозависимые условия

    Проблема: Нужно посчитать только "Да" с большой буквы, игнорируя "да" или "ДА".

    Решение: Добавьте вспомогательный столбец с формулой =ЕСЛИ(A2="Да"; 1; 0) и используйте =СУММ(D2:D100).

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

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

    Используйте комбинацию ЕСЛИОШИБКА + ПОИСКПОЗ в массиве:

    =СУММ(--(ЧАСТОТА(ЕСЛИ($A$2:$A$100="Условие"; СТРОКА($A$2:$A$100)-1); СТРОКА($A$2:$A$100)-1)>0))

    В Excel 365 проще: =СЧЁТ(УНИК(ФИЛЬТР(A2:A100; A2:A100="Условие"))).

    Можно ли использовать СЧЁТЕСЛИ для подсчёта по цвету ячейки?

    Нет, СЧЁТЕСЛИ не анализирует цвета. Альтернативы:

    • VBA-функция (см. раздел 4).
    • Надстройка Morefunc с функцией COUNTBYCOLOR.
    • Фильтрация по цвету вручную (Данные → Фильтр → Фильтр по цвету) с последующим подсчётом видимых строк.
    Почему СЧЁТЕСЛИМН возвращает 0, хотя есть соответствующие строки?

    Причины и решения:

    • 🔹 Типы данных не совпадают: например, число сравнивается с текстом "100". Используйте =ЗНАЧЕН(A2) для преобразования.
    • 🔹 Лишние пробелы: очистите данные с помощью =СЖПРОБЕЛЫ().
    • 🔹 Ошибки в ячейках: СЧЁТЕСЛИМН игнорирует строки с ошибками. Добавьте условие <>"#Н/Д".
    Как посчитать количество ячеек, содержащих любую из нескольких подстрок?

    В Excel 365:

    =СУММ(--(ИЛИ(НЕ(ПОИСК("подстрока1"; A2:A100)=0)); НЕ(ПОИСК("подстрока2"; A2:A100)=0)))

    В старых версиях:

    =СУММПРОИЗВ(--НЕ(ЕОШИБКА(ПОИСК("подстрока1"; A2:A100))); --НЕ(ЕОШИБКА(ПОИСК("подстрока2"; A2:A100))))
    Есть ли альтернатива СЧЁТЕСЛИМН в Google Sheets?

    Да, в Google Таблицах используется тот же синтаксис:

    =COUNTIFS(A2:A100; "Да"; B2:B100; ">100")

    Отличия:

    • 🔹 Нет функции ФИЛЬТР (появилась только в 2023 году).
    • 🔹 Для сложных условий используйте QUERY:
      =QUERY(A2:B100; "SELECT COUNT(A) WHERE A='Да' AND B>100")