Как отфильтровать числа с помощью макросов VBA в Excel

Итог: узнайте, как применять числовые фильтры с VBA. Статья включает примеры фильтрации для диапазона между двумя числами: ТОП 10, больше/меньше среднего и т.д.

Уровень мастерства: Средний

VBA AutoFilter Automate Number Filters

Скачать файл

Файл 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

Файл в разделе загрузок выше содержит все эти примеры кода в одном месте. Вы можете добавить его в свою личную книгу макросов и использовать макросы в своих проектах.

Пожалуйста, оставьте комментарий ниже с любыми вопросами или предложениями. Спасибо!

Оцените статью
Добавить комментарий