Почему стандартный подсчёт не всегда работает
Вы когда-нибудь сталкивались с ситуацией, когда Excel упорно не хочет правильно считать целые числа в вашей таблице? Например, в колонке с данными о количестве товаров (15 шт, 20 шт, 3.5 кг) функция =СЧЁТ() выдаёт результат, который явно не совпадает с реальным количеством целых значений? Это типичная проблема, с которой сталкиваются и новички, и опытные пользователи.
Дело в том, что Excel воспринимает данные по-разному в зависимости от их формата и типа хранения. Число 5 в ячейке с форматом Общий и число 5,0 в ячейке с форматом Дробный — это два разных сценария для функций подсчёта. А если к этому добавить текстовые значения вроде "10 единиц" или даты, которые Excel внутренне хранит как числа, то задача усложняется в разы.
В этой статье мы разберём 7 надёжных способов подсчёта целых чисел в Excel, включая малоизвестные приёмы для работы с "упрямыми" данными. Вы узнаете, как обойти ловушки форматирования, как отделить целые числа от дробных, и почему иногда простая функция =СЧЁТЗ() даёт сбой.
Способ 1: Базовая функция СЧЁТ для чистых числовых данных
Если ваш диапазон содержит только целые числа без текстовых примесей (например, 1, 2, 3, ..., 100), то простейший способ — использовать функцию =СЧЁТ(). Она подсчитывает количество ячеек с числовыми значениями, игнорируя текст, пустые ячейки и ошибки.
Пример формулы для диапазона A1:A100:
=СЧЁТ(A1:A100)
- ✅ Подходит для "идеальных" данных без дробей и текста
- ✅ Быстро работает с большими диапазонами
- ❌ Не различает целые и дробные числа (считает и те, и другие)
- ❌ Игнорирует числа, хранящиеся как текст (например, после импорта из CSV)
Чтобы проверить, нет ли в ваших данных "спрятанных" дробных чисел, используйте условное форматирование:
- Выделите диапазон
- Перейдите в
Главная → Условное форматирование → Правила выделения ячеек → Больше... - В поле "Форматировать ячейки, которые" выберите
Значение ячейки → больше → 0,999именьше → -0,999(это выделит все нецелые числа)
Способ 2: Функция СЧЁТЕСЛИ для целых чисел с условием
Когда нужно подсчитать только целые числа, исключив дробные, на помощь приходит =СЧЁТЕСЛИ() с математическим условием. Логика проста: целое число при делении на 1 даёт остаток 0. Поэтому формула будет такой:
=СЧЁТЕСЛИ(A1:A100; "=ЦЕЛОЕ(A1)")
Но здесь есть подвох: СЧЁТЕСЛИ не поддерживает массивы в условии. Чтобы обойти это ограничение, используйте формулу массива (в новых версиях Excel она вводится автоматически):
=СЧЁТЕСЛИ(A1:A100; ">="&МИН(A1:A100)) - СЧЁТЕСЛИ(A1:A100; "<>"&ОКРУГЛ(A1:A100; 0))
Более надёжный вариант — комбинация СУММПРОИЗВ и ЦЕЛОЕ:
=СУММПРОИЗВ(--(A1:A100=ОКРУГЛ(A1:A100;0)))
Почему не работает =СЧЁТЕСЛИ(диапазон; "=ЦЕЛОЕ(*)")
Функция ЦЕЛОЕ в условии СЧЁТЕСЛИ не обрабатывается как формула — Excel воспринимает её как текст. Поэтому нужно использовать обходные пути с СУММПРОИЗВ или ОКРУГЛ.
| Формула | Подходит для | Ограничения |
|---|---|---|
=СЧЁТЕСЛИ(A1:A100; ">999") |
Целых чисел больше 1000 | Не отличает 1000 от 1000,5 |
=СУММПРОИЗВ(--(ЦЕЛОЕ(A1:A100)=A1:A100)) |
Точного подсчёта целых чисел | Требует ввода как формулы массива (Ctrl+Shift+Enter в старых версиях) |
=СЧЁТ(A1:A100)-СЧЁТЕСЛИ(A1:A100; "<>ОКРУГЛ(A1:A100;0)") |
Приблизительной оценки | Может давать сбои при отрицательных числах |
Способ 3: Фильтрация текстовых чисел (когда Excel "не видит" числа)
Частая проблема при импорте данных из CSV или баз данных: числа хранятся как текст (например, '15 вместо 15). Стандартные функции их игнорируют. Чтобы подсчитать такие "текстовые числа", используйте комбинацию ЕЧИСЛО и ЗНАЧЕН:
=СУММПРОИЗВ(--(ЕЧИСЛО(ЗНАЧЕН(A1:A100))); --(ЗНАЧЕН(A1:A100)=ОКРУГЛ(ЗНАЧЕН(A1:A100);0)))
Альтернативный вариант с функцией ПРОВЕРКА.ОШИБОК:
=СЧЁТЕСЛИ(A1:A100; ">="&МИН(A1:A100)) - СЧЁТЕСЛИ(A1:A100; "<>"&ОКРУГЛ(A1:A100;0)) - СЧИТАТЬПУСТОТЫ(A1:A100)
Выделите диапазон и посмотрите на выравнивание: текстовые значения выровнены по левому краю, числа — по правому
Используйте функцию =ЕТЕКСТ(A1) для проверки отдельных ячеек
Примените Текст по столбцам (Данные → Текст по столбцам) с форматом "Общий" для конвертации
Используйте =ЗНАЧЕН() для принудительного преобразования текста в число
-->
Внимание! Если после преобразования ЗНАЧЕН() вы получаете ошибку #ЗНАЧ!, это значит, что в ячейке есть не только цифры (например, "15 кг" или "~20"). В таком случае потребуется предварительная очистка данных с помощью ПОИСК/ПОДСТАВИТЬ.
Способ 4: Подсчёт целых чисел в диапазоне (с учётом границ)
Допустим, вам нужно посчитать целые числа от 10 до 50 включительно, игнорируя дробные значения. Здесь поможет комбинация СЧЁТЕСЛИМН с округлением:
=СЧЁТЕСЛИМН(A1:A100; ">="&10; "<="&50) - СЧЁТЕСЛИМН(A1:A100; ">="&10; "<="&50; "<>"&ОКРУГЛ(A1:A100;0))
Для более точного контроля используйте формулу массива:
=СУММ(--(A1:A100>=10); --(A1:A100<=50); --(A1:A100=ОКРУГЛ(A1:A100;0)))
Если вам нужно посчитать целые числа строго между двумя значениями (например, от 10 до 50, но не включая 10 и 50), модифицируйте условие:
=СУММПРОИЗВ(--(A1:A100>10); --(A1:A100<50); --(ЦЕЛОЕ(A1:A100)=A1:A100))
Целые числа (количество товаров, люди и т.п.)
Дробные числа (цены, вес, проценты)
Даты и время
Текстовые значения
Другое-->
Способ 5: Работа с датами (когда Excel путает числа и даты)
Excel хранит даты как числа (например, 1 января 2023 = 44927). Если в вашем диапазоне смешаны настоящие числа и даты, стандартные функции подсчёта дадут неверный результат. Чтобы посчитать только целые числа, исключив даты, используйте:
=СУММПРОИЗВ(
--(ЕЧИСЛО(A1:A100)),
--(A1:A100=ОКРУГЛ(A1:A100;0)),
--(ИЛИ(A1:A100<ДАТА(1900;1;1); A1:A100>ДАТА(2100;12;31)))
)
Объяснение логики:
ЕЧИСЛО— проверяет, что ячейка содержит число (исключает текст)A1:A100=ОКРУГЛ(A1:A100;0)— проверяет, что число целоеИЛИ(...)— исключает значения, попадающие в диапазон возможных дат Excel (с 1900 по 2100 год)
Внимание! Если в вашей таблице используются даты до 1900 года (например, исторические данные), этот метод не сработает — Excel не поддерживает даты раньше 1 января 1900 года. В таком случае придётся использовать дополнительную проверку на формат ячейки с помощью VBA или Power Query.
Способ 6: Продвинутый подсчёт с Power Query
Для больших наборов данных (тысячи строк) или сложных условий удобнее использовать Power Query — инструмент ETL (Extract-Transform-Load), встроенный в Excel 2016+. Он позволяет:
- 🔍 Автоматически определять типы данных
- 🧹 Очищать "грязные" данные (удалять символы, преобразовывать форматы)
- 📊 Фильтровать целые числа с учётом нескольких условий
Пошаговая инструкция:
- Выделите ваш диапазон и перейдите на вкладку
Данные → Из таблицы/диапазона(илиПолучить данные → Из таблицы/диапазона) - В открывшемся редакторе Power Query выберите колонку с числами →
Преобразовать → Тип данных → Целое число - Добавьте фильтр:
Главная → Фильтр → Числовые фильтры → Равно...и введите0в поле "Остаток от деления на 1" - Нажмите
Закрыть и загрузить— Excel создаст новую таблицу только с целыми числами, которые можно подсчитать функцией=СЧЁТ()
Преимущества Power Query:
- ✅ Обрабатывает миллионы строк без замедления
- ✅ Сохраняет шаги преобразования для повторного использования
- ✅ Автоматически обновляет результаты при изменении исходных данных
Способ 7: Автоматизация с помощью VBA (для повторяющихся задач)
Если вам регулярно приходится подсчитывать целые числа в больших отчётах, имеет смысл написать простую макрос-функцию. Откройте редактор VBA (Alt + F11) и вставьте следующий код:
Function COUNT_INTEGERS(rng As Range) 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 = Int(cell.Value) Then
count = count + 1
End If
End If
Next cell
COUNT_INTEGERS = count
End Function
Теперь в Excel вы можете использовать эту функцию как обычно:
=COUNT_INTEGERS(A1:A100)
Расширенная версия макроса, которая игнорирует даты и текстовые числа:
Function COUNT_TRUE_INTEGERS(rng As Range) As Long
Dim cell As Range
Dim count As Long
count = 0
For Each cell In rng
If VarType(cell.Value) = vbDouble Then 'Проверяем, что это число (не текст и не дата)
If cell.Value = Int(cell.Value) And _
(cell.Value < 1 Or cell.Value > 2958465) Then 'Исключаем даты (1 = 01.01.1900, 2958465 = 31.12.9999)
count = count + 1
End If
End If
Next cell
COUNT_TRUE_INTEGERS = count
End Function
Внимание! Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии такого файла Excel может показать предупреждение о безопасности — разрешите выполнение макросов, только если файлу доверяете.
FAQ: Частые вопросы о подсчёте целых чисел в Excel
Почему функция СЧЁТ считает даты как числа?
Excel хранит даты в виде последовательных чисел, где 1 = 1 января 1900 года, 2 = 2 января 1900 года и т.д. Поэтому функции вроде СЧЁТ или СУММ воспринимают даты как обычные числа. Чтобы исключить даты из подсчёта, используйте проверку диапазона (см. Способ 5).
Как подсчитать целые числа в фильтрованном диапазоне?
Если ваши данные отфильтрованы (например, с помощью автофильтра), стандартные функции вернут результат для всего диапазона, а не только для видимых ячеек. Используйте ПРОМЕЖУТОЧНЫЕ.ИТОГИ:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(2; A1:A100) - ПРОМЕЖУТОЧНЫЕ.ИТОГИ(2; --(A1:A100<>ОКРУГЛ(A1:A100;0)))
Где 2 — это код функции СЧЁТ для промежуточных итогов.
Можно ли посчитать целые числа в сводной таблице?
Да, но для этого нужно:
- Добавить ваш диапазон в
Источник данных сводной таблицы - Создать вычисляемое поле с формулой
=ЕСЛИ(ЦЕЛОЕ([Ваше_поле])=[Ваше_поле]; 1; 0) - Добавить это поле в область
Значенияи установить для него операциюСумма
Результат покажет количество целых чисел в исходных данных.
Как подсчитать уникальные целые числа?
Используйте комбинацию ЧАСТОТА и СУММПРОИЗВ:
=СУММ(--(ЧАСТОТА(ЕСЛИ(A1:A100=ОКРУГЛ(A1:A100;0); A1:A100); A1:A100)>0))
В Excel 365 и 2021 можно использовать более простую формулу:
=СЧЁТЕСЛИМН(УНИК(A1:A100); ">="&МИН(A1:A100); "<="&МАКС(A1:A100); "="&ОКРУГЛ(УНИК(A1:A100);0))
Почему моя формула возвращает #ЗНАЧ!?
Ошибка #ЗНАЧ! в формулах подсчёта целых чисел обычно возникает по трём причинам:
- Текст в числовых ячейках: Проверьте данные на наличие скрытых символов (например, пробелов) с помощью
=ПРОБЕЛЫ(A1)=A1 - Ошибки в диапазоне: Используйте
=ЕОШИБКА(A1)для выявления проблемных ячеек - Несовместимые типы данных в формуле массива: Убедитесь, что все части формулы возвращают массивы одинакового размера
Для диагностики добавьте в формулу проверку ЕЧИСЛО или ЕТЕКСТ.