Работа с числовыми данными в Microsoft Excel часто требует выделения только целых значений — будь то идентификаторы клиентов, количество товаров или дискретные показатели. Однако стандартный фильтр по умолчанию не различает целые числа и дробные, что создаёт проблемы при анализе. Например, если в столбце смешаны значения 5, 7.3 и 12, то попытка отобрать только "чистые" числа приведёт к ошибкам.
В этой статье мы разберём 5 проверенных методов фильтрации целых чисел — от базовых инструментов до продвинутых приёмов с формулами и VBA. Вы узнаете, как обойти ограничения автофильтра, использовать функции ЦЕЛОЕ() и ОСТАТ(), а также автоматизировать процесс с помощью макросов. Особое внимание уделим скрытым ловушкам: почему фильтр может пропустить числа с нулевой дробной частью (15.0) и как этого избежать.
Перед тем как приступить, проверьте формат ячеек: целые числа должны иметь тип Общий или Числовой без дробных знаков. Если данные импортированы из внешних источников (например, CSV), они могут храниться как текст — в этом случае сначала преобразуйте их с помощью функции ЗНАЧЕН().
1. Автофильтр: быстрый, но неточный способ
Самый очевидный метод — использовать встроенный автофильтр. Выделите диапазон данных, перейдите на вкладку Данные → Фильтр и активируйте выпадающее меню в заголовке столбца. Однако здесь кроется подвох: Excel не умеет напрямую фильтровать по типу числа (целое/дробное). Вместо этого придётся воспользоваться обходным путём:
В меню фильтра выберите Числовые фильтры → Настраиваемый фильтр. В появившемся окне установите условие:
=ЦЕЛОЕ(A2)=A2
где A2 — первая ячейка с данными. Этот трюк работает потому, что функция ЦЕЛОЕ() отсекает дробную часть, и если результат равен исходному числу, значит оно целое.
⚠️ Внимание: Метод не сработает для чисел с нулевой дробной частью (например, 15.0), так как Excel воспринимает их как дробные. Чтобы исправить это, предварительно примените к данным формат Числовой с нулем десятичных знаков.
- ✅ Плюсы: Не требует дополнительных столбцов, работает в любой версии Excel.
- ❌ Минусы: Не распознаёт числа вида
10.0, может тормозить на больших массивах (>10 000 строк). - 🔄 Альтернатива: Используйте
ОСТАТ(A2;1)=0— этот вариант надёжнее для чисел с нулевой дробной частью.
2. Функция ОСТАТ(): надёжный метод для формул
Для точной фильтрации целых чисел лучше использовать функцию ОСТАТ() (или MOD() в английской версии). Она возвращает остаток от деления числа на заданное значение. Если остаток от деления на 1 равен 0 — число целое. Формула для проверки:
=ОСТАТ(A2;1)=0
Чтобы применить этот метод:
- Добавьте вспомогательный столбец рядом с исходными данными.
- Введите формулу
=ОСТАТ(B2;1)=0, гдеB2— ячейка с проверяемым числом. - Растяните формулу на весь столбец.
- Активируйте фильтр и отсортируйте по значению
ИСТИНАво вспомогательном столбце.
Этот способ надёжно отсеивает все дробные числа, включая те, что оформлены как 15.0. Кроме того, его можно комбинировать с другими условиями, например, фильтровать целые числа в заданном диапазоне:
=И(ОСТАТ(B2;1)=0; B2>10; B2<100)
Почему ОСТАТ() лучше ЦЕЛОЕ()?
Функция ЦЕЛОЕ() округляет числа вниз, что может привести к ложным срабатываниям на отрицательных значениях (например, ЦЕЛОЕ(-3.2) вернёт -4, а не -3). ОСТАТ() лишена этого недостатка и корректно обрабатывает все случаи, включая нули и отрицательные числа.
3. Условное форматирование: визуальная фильтрация
Если вам не нужно скрывать строки, а достаточно просто выделить целые числа, используйте условное форматирование. Этот метод наглядно подсветит все ячейки, соответствующие критерию, без изменения структуры данных.
Инструкция:
- Выделите диапазон с числами.
- Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите тип правила
Использовать формулу для определения форматируемых ячеек. - Введите формулу
=ОСТАТ(A1;1)=0(гдеA1— первая ячейка диапазона). - Задайте формат (например, зелёный фон) и нажмите
ОК.
Теперь все целые числа будут выделены цветом. Этот способ удобен для быстрого анализа без изменения исходных данных. Чтобы отфильтровать выделенные ячейки, воспользуйтесь Найти и выделить → Выделение группы ячеек (вкладка Главная).
| Метод | Точность | Скорость | Требует вспомогательного столбца | Подходит для больших данных |
|---|---|---|---|---|
Автофильтр с ЦЕЛОЕ() |
Средняя | Быстро | Нет | Да (до 50 000 строк) |
Формула ОСТАТ() |
Высокая | Средне | Да | Да (с оптимизацией) |
| Условное форматирование | Высокая | Мгновенно | Нет | Нет (тормозит при >100 000 ячеек) |
| Power Query | Высокая | Медленно | Нет | Да |
| VBA-макрос | Высокая | Очень быстро | Нет | Да |
4. Power Query: продвинутая фильтрация без формул
Для пользователей Excel 2016+ или Office 365 оптимальным решением станет инструмент Power Query (или Get & Transform). Он позволяет фильтровать данные на этапе загрузки, не перегружая саму таблицу.
Пошаговая инструкция:
- Выделите исходный диапазон и нажмите
Данные → Из таблицы/диапазона(в группеПолучить и преобразовать данные). - В открывшемся редакторе Power Query выделите столбец с числами.
- Перейдите на вкладку
Добавить столбец → Настраиваемый столбец. - Введите название нового столбца (например,
Целое?) и формулу:= Number.Mod( [ВашСтолбец], 1 ) = 0 - Нажмите
ОК, затем отфильтруйте новый столбец по значениюTRUE. - Удалите вспомогательный столбец и загрузите данные обратно в Excel.
Power Query автоматически распознаёт числа с нулевой дробной частью как целые, в отличие от автофильтра. Кроме того, этот метод не зависит от формата ячеек и работает даже с текстовymi представлениями чисел (например, "15" вместо 15).
Убедитесь, что столбец не содержит пустых ячеек
Проверьте формат данных (должен быть "Числовой" или "Общий")
Сохраните исходную таблицу (Power Query перезапишет данные)
Отключите объединение ячеек в заголовках-->
5. VBA-макрос: автоматизация для больших массивов
Если вам регулярно приходится фильтровать целые числа в таблицах с десятками тысяч строк, стоит автоматизировать процесс с помощью VBA. Ниже приведён макрос, который скрывает все строки с дробными значениями в выбранном столбце:
Sub FilterIntegers()
Dim rng As Range
Dim cell As Range
Dim i As Long
Dim lastRow As Long
' Задаём диапазон (например, столбец B)
Set rng = Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row)
' Показываем все строки (снимаем предыдущие фильтры)
Cells.EntireRow.Hidden = False
' Проверяем каждую ячейку
For Each cell In rng
If Not IsNumeric(cell.Value) Then GoTo NextCell ' Пропускаем нечисловые значения
If cell.Value - Int(cell.Value) <> 0 Then
cell.EntireRow.Hidden = True
End If
NextCell:
Next cell
End Sub
Чтобы использовать макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Закройте редактор и запустите макрос через
Вид → Макросы(или назначьте горячую клавишу).
⚠️ Внимание: Макрос скрывает строки, а не удаляет их. Чтобы вернуть все данные, запустите макрос ещё раз — он сначала снимет все скрытия. Для работы с очень большими таблицами (>100 000 строк) оптимизируйте код, отключив обновление экрана:
Application.ScreenUpdating = False
' ... ваш код ...
Application.ScreenUpdating = True
6. Частые ошибки и как их избежать
Даже опытные пользователи Excel сталкиваются с проблемами при фильтрации целых чисел. Вот наиболее распространённые ловушки и способы их обхода:
- 🔢 Числа в текстовом формате: Если данные импортированы как текст (например,
'15), функцииОСТАТ()иЦЕЛОЕ()не сработают. Решение: применитеЗНАЧЕН()или используйте Power Query для преобразования. - 📉 Округлённые дробные числа: Числа вида
15.0000001визуально выглядят как целые, но таковыми не являются. Чтобы их отсеять, используйте формулу с округлением:=ОКРУГЛ(A2;0)=A2 - 📊 Объединённые ячейки: Фильтр игнорирует объединённые ячейки в заголовках. Перед фильтрацией разъедините их через
Главная → Объединить и центрировать. - 🔍 Скрытые символы: Иногда в ячейках присутствуют невидимые символы (пробелы, табуляции). Очистите данные функцией
СЖПРОБЕЛЫ().
Если после фильтрации остаются "лишние" строки, проверьте:
- Формат ячеек (должен быть Общий или Числовой).
- Наличие скрытых символов (используйте
ДЛСТР()для проверки длины). - Точность формул (например,
ОСТАТ()чувствительна к ошибкам округления).
FAQ: Ответы на частые вопросы
Можно ли отфильтровать целые числа без вспомогательного столбца?
Да, но с ограничениями. В Excel 2019+ и Office 365 можно использовать динамические массивы с функцией ФИЛЬТР():
=ФИЛЬТР(A2:A100; ОСТАТ(A2:A100;1)=0)
В более ранних версиях придётся использовать VBA или Power Query.
Почему фильтр не работает с числами вида 10.0 или 15.00?
Excel хранит такие числа как дробные, даже если визуально они выглядят как целые. Решения:
- Используйте формулу
=ОСТАТ(A2*10^5;10^5)/10^5=0для учёта округлений. - Примените формат Числовой с
0десятичных знаков и обновите данные (F9).
Как отфильтровать целые числа в Google Таблицах?
В Google Sheets используйте ту же логику, но с английскими названиями функций:
=FILTER(A2:A100; MOD(A2:A100;1)=0)
Или создайте вспомогательный столбец с формулой =MOD(A2;1)=0 и отфильтруйте по TRUE.
Можно ли фильтровать целые числа в сводной таблице?
Да, но косвенно:
- Добавьте в исходные данные вспомогательный столбец с формулой
=ОСТАТ([@Значение];1)=0. - Обновите источник данных сводной таблицы.
- Добавьте вспомогательный столбец в область
Фильтрыи отметьтеИСТИНА.
Как ускорить фильтрацию на больших таблицах (>100 000 строк)?
Оптимизация:
- Отключите автоматический пересчёт формул:
Формулы → Параметры вычислений → Вручную. - Используйте Power Query — он быстрее обрабатывает большие массивы.
- Для VBA отключите обновление экрана и события:
Application.ScreenUpdating = FalseApplication.EnableEvents = False