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

Почему стандартный подсчёт не работает и что делать

Вы когда-нибудь пытались вручную пересчитать все числа между 100 и 500 в таблице с тысячей строк? А если этих диапазонов десятки, и они постоянно меняются? Excel способен автоматизировать эту задачу — но только если знать правильные инструменты. Многие пользователи ошибочно полагают, что достаточно отсортировать данные или использовать простой фильтр, но это лишь полумеры. Реальные решения лежат в области условных функций и динамических массивов.

В этой статье мы разберём 5 проверенных методов подсчёта чисел в промежутке — от базовых формул до малоизвестных приёмов с ЛЯМБДА и ФИЛЬТР. Вы узнаете, как:

  • 🔢 Подсчитать числа между двумя границами (включительно/исключительно)
  • 📊 Обработать диапазоны с пропусками и текстовыми значениями
  • ⚡ Ускорить вычисления для больших массивов данных (100 000+ строк)
  • 🛠️ Автоматизировать процесс с помощью Power Query

Важно: все примеры тестировались в Excel 365, Excel 2021 и Excel 2019. Для старых версий (2016 и ранее) некоторые методы потребуют адаптации — об этом мы предупредим отдельно.

📊 Какой версии Excel вы пользуетесь?
Excel 365 (подписка)
Excel 2021
Excel 2019
Excel 2016 или старше
Не знаю

Метод 1: Классическая формула СЧЁТЕСЛИ для простых диапазонов

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

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

Чтобы посчитать числа от 50 до 100 включительно, используйте два условия с оператором "<=":

=СЧЁТЕСЛИ(A2:A100; "<=100") - СЧЁТЕСЛИ(A2:A100; "<50")

Эта формула вычитает из количества чисел ≤100 количество чисел <50, оставляя только значения в промежутке [50; 100]. Минус метода: если в диапазоне есть текст или пустые ячейки, они будут проигнорированы автоматически.

Убедитесь, что диапазон содержит только числа|Проверьте отсутствие скрытых символов (пробелов, неразрывных пробелов)|Учитывайте регистр при работе с текстовыми условиями (если они есть)|Тестируйте формулу на небольшом фрагменте данных

-->

⚠️ Внимание: Если в вашем диапазоне есть ячейки с формулами, возвращающими пустую строку (=""), СЧЁТЕСЛИ посчитает их как нулевые значения. Чтобы исключить их, добавьте условие ">0".
ФормулаЧто считаетПример результата
=СЧЁТЕСЛИ(A2:A100; ">10")Числа > 1042
=СЧЁТЕСЛИ(A2:A100; "<=20")Числа ≤ 2078
=СЧЁТЕСЛИ(A2:A100; ">10")-СЧЁТЕСЛИ(A2:A100; ">20")Числа в интервале (10; 20]36
=СЧЁТЕСЛИ(A2:A100; ">=10")-СЧЁТЕСЛИ(A2:A100; ">20")Числа в интервале [10; 20]40

Метод 2: СЧЁТЕСЛИМН для сложных условий

Когда нужно учитывать несколько критериев одновременно (например, числа от 50 до 100 и только в определённом столбце), на помощь приходит СЧЁТЕСЛИМН (COUNTIFS). Её синтаксис:

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

Пример: подсчёт чисел от 100 до 500 в столбце B, но только если соответствующая ячейка в столбце A содержит слово "Да":

=СЧЁТЕСЛИМН(A2:A100; "Да"; B2:B100; ">100"; B2:B100; "<500")

Ключевое преимущество: вы можете комбинировать до 127 пар диапазон-условие в одной формуле. Это незаменимо для анализа многомерных данных, например:

  • 📅 Подсчёт продаж в диапазоне дат и по конкретному региону
  • 💰 Анализ транзакций по сумме и типу платежа
  • 📦 Контроль запасов в заданном количественном интервале и по категории товара
Как ускорить СЧЁТЕСЛИМН для больших диапазонов

Если ваш диапазон превышает 50 000 строк, разбейте его на несколько меньших блоков (например, по 10 000 строк) и просуммируйте результаты отдельных СЧЁТЕСЛИМН. Это снизит нагрузку на процессор и ускорит пересчёт книги.

Метод 3: Динамические массивы с ФИЛЬТР (Excel 365/2021)

В современных версиях Excel появилась революционная функция ФИЛЬТР (FILTER), которая позволяет не только подсчитывать, но и визуализировать отфильтрованные данные. Сочетание ФИЛЬТР + СТРОКА даёт уникальные возможности:

=СЧЁТ(ФИЛЬТР(диапазон; (диапазон>=нижняя_граница)*(диапазон<=верхняя_граница)))

Пример для подсчёта чисел от 50 до 100 в диапазоне A2:A100:

=СЧЁТ(ФИЛЬТР(A2:A100; (A2:A100>=50)*(A2:A100<=100)))

Почему это лучше традиционных методов?

  • 🔄 Динамический результат: формула автоматически обновляется при изменении исходных данных
  • 📋 Возможность вывести сами значения, а не только их количество (уберите СЧЁТ)
  • 🛠️ Поддержка логических операторов внутри условия (например, ИЛИ через +)
⚠️ Внимание: Функция ФИЛЬТР доступна только в Excel 365 и Excel 2021. В более старых версиях аналогичный результат можно получить через ПРОСМОТРХ или Power Query, но это потребует дополнительных действий.
=ФИЛЬТР(A2:A100; (A2:A100>=50)*(A2:A100<=100))

Результат будет "проливаться" вниз автоматически (это называется динамический массив).

-->

Метод 4: Power Query для обработки миллионов строк

Когда речь идёт о больших данных (100 000+ строк), стандартные формулы Excel начинают "тормозить". Здесь на сцену выходит Power Query — инструмент ETL (Extract, Transform, Load), встроенный в Excel. Он позволяет:

  • 📥 Импортировать данные из любых источников (CSV, SQL, веб)
  • ⚡ Фильтровать и трансформировать миллионы строк без формул
  • 🔄 Автоматически обновлять результаты при изменении исходников

Алгоритм действий для подсчёта чисел в промежутке:

  1. Выделите исходный диапазон → Данные → Из таблицы/диапазона
  2. В редакторе Power Query выберите столбец → Фильтр по числу → Числовые фильтры → Между...
  3. Укажите нижнюю и верхнюю границы → ОК
  4. Добавьте шаг группировки (Трансформация → Группировка) для подсчёта строк
  5. Нажмите Закрыть и загрузить — результат появится на новом листе

Преимущество Power Query: обработка происходит на уровне движка xVelocity, что в 10-100 раз быстрее формул. Кроме того, вы можете:

  • 🔗 Объединять данные из нескольких источников
  • 🧹 Очищать "грязные" данные (удалять дубли, исправлять ошибки)
  • 📅 Работать с историческими версиями (откат изменений)

Метод 5: Пользовательская функция на VBA для специфических задач

Если вам нужно автоматизировать рутинные операции или обрабатывать данные по уникальным правилам, стоит обратиться к VBA (Visual Basic for Applications). Например, следующая функция подсчитывает числа в промежутке с учётом пользовательских исключений:

Function CountInRange(rng As Range, minVal As Double, maxVal As Double, Optional exclude As Variant) As Long

Dim cell As Range

Dim count As Long

count = 0

For Each cell In rng

If IsNumeric(cell.Value) Then

If cell.Value >= minVal And cell.Value <= maxVal Then

If Not IsEmpty(exclude) Then

If InStr(1, exclude, "|" & cell.Value & "|") = 0 Then

count = count + 1

End If

Else

count = count + 1

End If

End If

End If

Next cell

CountInRange = count

End Function

Как использовать:

  1. Нажмите Alt + F11 для открытия редактора VBA
  2. Вставьте код в новый модуль (Insert → Module)
  3. В ячейке Excel введите: =CountInRange(A2:A100; 50; 100; "|75|80|")

Эта функция подсчитает числа от 50 до 100, исключая значения 75 и 80. Вы можете:

  • 🔧 Модифицировать логику для учёта текстовых меток
  • 📌 Добавить обработку ошибок (#Н/Д, #ЗНАЧ!)
  • 🔄 Сделать функцию рекурсивной для вложенных диапазонов
⚠️ Внимание: При использовании VBA в файлах .xlsx Excel выдаст предупреждение о макросах. Чтобы избежать этого, сохраните файл в формате .xlsm (с поддержкой макросов) и настройте уровень безопасности в Файл → Параметры → Центр управления безопасностью.

Сравнение методов: какой выбрать для вашей задачи

Выбор оптимального метода зависит от четырёх ключевых факторов:

  1. Версия Excel: в 365/2021 доступны ФИЛЬТР и динамические массивы
  2. Объём данных: для миллионов строк подходит только Power Query
  3. Сложность условий: СЧЁТЕСЛИМН справится с 5-10 критериями, VBA — с любым количеством
  4. Необходимость визуализации: ФИЛЬТР позволяет вывести сами данные, а не только их количество
МетодМакс. строкСложность условийДинамичностьТребует VBA
СЧЁТЕСЛИ100 000Простые❌ Нет❌ Нет
СЧЁТЕСЛИМН500 000Средние❌ Нет❌ Нет
ФИЛЬТР+СЧЁТ1 000 000Сложные✅ Да❌ Нет
Power Query10 000 000+Любые✅ Да❌ Нет
VBAОграничено памятьюЛюбые✅ Да✅ Да

Рекомендации по выбору:

  • 📌 Для разовых задач на небольших данных (до 10 000 строк) хватит СЧЁТЕСЛИ или СЧЁТЕСЛИМН
  • 🔄 Если данные часто обновляются и нужна визуализация — используйте ФИЛЬТР
  • 🗃️ Для архивных данных (миллионы строк) или сложных трансформаций — только Power Query
  • 🛠️ Если требуется уникальная логика (например, исключения по списку) — пишите функцию на VBA

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

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

Стандартными формулами — нет. Но вы можете:

  1. Использовать VBA для анализа цвета (Interior.Color)
  2. Добавить вспомогательный столбец с формулой, которая определяет цвет (например, через ПОЛУЧИТЬ.ЯЧЕЙКУ + условное форматирование)
  3. В Excel 365 применить ЛЯМБДА с ФИЛЬТР и ФОРМУЛАМАСС (требует продвинутых навыков)

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

Function CountRedCells(rng As Range) As Long

Dim cell As Range

Dim count As Long

count = 0

For Each cell In rng

If cell.Interior.Color = RGB(255, 0, 0) Then

count = count + 1

End If

Next cell

CountRedCells = count

End Function

Как подсчитать числа в промежутке по нескольким столбцам одновременно?

Используйте СЧЁТЕСЛИМН с перечислением всех диапазонов и условий. Пример для трёх столбцов (A, B, C), где нужно посчитать числа от 10 до 20 в любом из них:

=СЧЁТЕСЛИМН(A2:A100; ">10"; A2:A100; "<20") +

СЧЁТЕСЛИМН(B2:B100; ">10"; B2:B100; "<20") +

СЧЁТЕСЛИМН(C2:C100; ">10"; C2:C100; "<20")

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

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

--(A2:A100>=10); --(A2:A100<=20);

--(B2:B100>=10); --(B2:B100<=20);

--(C2:C100>=10); --(C2:C100<=20)

)

Почему формула СЧЁТЕСЛИ возвращает #ЗНАЧ!?

Ошибка #ЗНАЧ! в СЧЁТЕСЛИ возникает по трём причинам:

  1. Неверный диапазон: проверьте, что первый аргумент — это ссылка на ячейки (например, A2:A100, а не текст)
  2. Слишком длинное условие: в старых версиях Excel длина условия ограничена 255 символами
  3. Использование массива: СЧЁТЕСЛИ не работает с массивами (используйте СЧЁТЕСЛИМН или СУММПРОИЗВ)

Решение: разбейте задачу на несколько СЧЁТЕСЛИ или перейдите на СЧЁТЕСЛИМН.

Как посчитать числа в промежутке с учётом даты (например, за последний месяц)?

Для работы с датами используйте комбинацию СЧЁТЕСЛИМН с функциями ДАТА, СЕГОДНЯ и ЕМЕСЯЦ. Пример для подсчёта чисел в столбце B, где соответствующая дата в столбце A попадает в текущий месяц:

=СЧЁТЕСЛИМН(

A2:A100; ">="&ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ()); 1);

A2:A100; "<="&ЕМЕСЯЦ(СЕГОДНЯ(); 0);

B2:B100; ">50";

B2:B100; "<100"

)

Пояснения:

  • ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ()); 1) — первое число текущего месяца
  • ЕМЕСЯЦ(СЕГОДНЯ(); 0) — последнее число текущего месяца
Можно ли использовать эти методы в Google Таблицах?

Да, но с оговорками:

  • 🔹 СЧЁТЕСЛИ и СЧЁТЕСЛИМН работают идентично
  • 🔹 Вместо ФИЛЬТР используйте FILTER (синтаксис аналогичный)
  • 🔹 Power Query в Google Таблицах называется App Scripts (требует знания JavaScript)
  • 🔹 VBA не поддерживается — вместо него используйте Google Apps Script

Пример для Google Таблиц:

=COUNT(FILTER(A2:A100; (A2:A100>=50)*(A2:A100<=100)))