Итог: узнайте, как применять числовые фильтры с VBA. Статья включает примеры фильтрации для диапазона между двумя числами: ТОП 10, больше/меньше среднего и т.д.
Уровень мастерства: Средний
Скачать файл
Файл Excel, содержащий код, можно скачать ниже. Этот файл содержит код для фильтрации различных типов данных и типов фильтров. Пожалуйста, ознакомьтесь с моей статьей Фильтрация сводной таблицы или среза по самой последней дате или периоду для более подробной информации.
VBA AutoFilters Guide.xlsm (100.5 KB)
Числовые фильтры в Excel
При фильтрации столбца, содержащего числа, мы можем выбрать элементы из списка раскрывающегося меню фильтра.
Тем не менее, обычно проще использовать параметры в подменю Number Filters для создания пользовательского фильтра. Это дает нам возможности для критериев фильтрации, которые равны, не равны, больше, меньше, меньше или равны, ТОП 10 и выше/ниже среднего.
Следующий макрос содержит примеры фильтрации чисел. Пожалуйста, ознакомьтесь с моей статьей Фильтрация сводной таблицы или среза по самой последней дате или периоду для получения более подробной информации о том, как использовать метод AutoFilter и его параметры.
При применении фильтра для одного числа нам нужно использовать форматирование чисел, которое применяется в столбце. Это странная причуда VBA, которая может привести к неточным результатам, если вы не знаете правила. В приведенном ниже коде есть пример.
Образцы кода VBA для числовых фильтров
Код в поле ниже можно скопировать / вставить в VB Editor.
Sub AutoFilter_Number_Examples()
' Примеры фильтрации столбцов с помощью NUMBERS
Dim lo As ListObject
Dim iCol As Long
' Установить ссылку на первую таблицу на листе
Set lo = Sheet1.ListObjects(1)
' Установить поле фильтра
iCol = lo.ListColumns("Revenue").Index
' Очистить фильтры
lo.AutoFilter.ShowAllData
With lo.Range
' Одно число - используйте форматирование, которое видно в
' раскрывающемся меню фильтра
.AutoFilter Field:=iCol, Criteria1:="$2,955.25"
' Не равно - не требует форматирования чисел для соответствия
.AutoFilter Field:=iCol, Criteria1:="<>2955.25"
' Больше или меньше, чем число
' (оператор сравнения <> = перед числом в Criteria1)
.AutoFilter Field:=iCol, Criteria1:="<4000"
' Между 2 числами
' (больше или равно 100 и меньше 4000)
.AutoFilter Field:=iCol, _
Criteria1:=">=100", _
Operator:=xlAnd, _
Criteria2:="<4000"
' Вне диапазона (меньше 100 ИЛИ больше 4000)
.AutoFilter Field:=iCol, _
Criteria1:="<100", _
Operator:=xlOr, _
Criteria2:=">4000"
' Топ-10 товаров (Критерий1 - количество товаров)
.AutoFilter Field:=iCol, _
Criteria1:="10", _
Operator:=xlTop10Items
' Нижние 5 пунктов (Критерий1 - количество элементов)
.AutoFilter Field:=iCol, _
Criteria1:="5", _
Operator:=xlBottom10Items
' Топ 10 процентов (Criteria1 - количество элементов)
.AutoFilter Field:=iCol, _
Criteria1:="10", _
Operator:=xlTop10Percent
' Нижний 7 процентов
.AutoFilter Field:=iCol, _
Criteria1:="7", _
Operator:=xlBottom10Percent
' Выше среднего - оператор: = xlFilterDynamic
.AutoFilter Field:=iCol, _
Criteria1:=xlFilterAboveAverage, _
Operator:=xlFilterDynamic
' Ниже среднего
.AutoFilter Field:=iCol, _
Criteria1:=xlFilterBelowAverage, _
Operator:=xlFilterDynamic
End With
End Sub
Фильтры и типы данных
Параметры раскрывающегося меню фильтра изменяются в зависимости от типа данных в столбце. У нас есть разные фильтры для текста, чисел, дат и цветов. Это создает МНОГО различных комбинаций операторов и критериев для каждого типа фильтра.
Я создал отдельные статьи для каждого из этих типов фильтров. Статьи содержат пояснения и примеры кода VBA.
- Как очистить фильтры с помощью VBA
- Как отфильтровать пустые и непустые клетки
- Как фильтровать текст с помощью VBA
- Как отфильтровать даты по VBA
- Как отфильтровать цвета и значки с помощью VBA
Файл в разделе загрузок выше содержит все эти примеры кода в одном месте. Вы можете добавить его в свою личную книгу макросов и использовать макросы в своих проектах.
Пожалуйста, оставьте комментарий ниже с любыми вопросами или предложениями. Спасибо!
спасибо!
нашёл ответ в статье про фильтр текста