В VBA вы можете создать Автофильтр для фильтрации диапазона ячеек или таблицы Excel. В этом уроке вы узнаете, как создавать Автофильтр для одного или нескольких столбцов и для нескольких условий.
Если вы хотите узнать, как использовать расширенный фильтр в VBA, щелкните здесь: Расширенный фильтр VBA
Создание автофильтра в VBA
Сначала вы увидите, как просто создать Автофильтр в диапазоне, чтобы пользователь мог фильтровать данные. Данные, которые мы будем использовать в примерах, представлены на изображении 1:
Изображение 1. Примеры данных для автофильтра
Вот код для создания Автофильтр:
1 | Sheet1.Range ("A1: E1"). Автофильтр |
Чтобы включить Автофильтр, нам нужно указать заголовок диапазона, в нашем случае A1: E1, и использовать Автофильтр метод объекта Диапазон. В результате в нашем диапазоне данных активированы фильтры:
Изображение 2. Автофильтр включен для данных
Автофильтр с параметрами полей и критериев
VBA также позволяет автоматически фильтровать определенное поле с определенными значениями.
Для этого вам нужно использовать параметры Поле а также Критерии1 метода Автофильтр. В этом примере мы хотим отфильтровать третий столбец (Продукт) для Продукт А Только. Вот код:
12 | Sheet1.Range ("A1: E1"). Поле автофильтра: = 3, _Criteria1: = "Продукт A" |
в Поле параметр, вы можете установить номер столбца в диапазоне (не в Excel), а в Критерии1 вы можете указать значение, которое хотите отфильтровать. После выполнения кода наша таблица выглядит так:
Изображение 3. Автофильтр с полем и критериями
Как видите, только строки с Продукт А в третьем столбце отображаются диапазон данных.
Автофильтр с полями и значениями нескольких критериев
Если вы хотите отфильтровать одно поле с несколькими значениями, вам нужно использовать параметр Оператор принадлежащий Автофильтр метод. Чтобы отфильтровать несколько значений, вам нужно установить Оператор к xlFilterValues а также поставить все значения Критерии в массиве. В этом примере мы фильтруем Продукт столбец для Продукт А а также Продукт B. Вот пример кода:
123 | Sheet1.Range ("A1: E1"). Поле автофильтра: = 3, _Criteria1: = Array («Продукт A», «Продукт B»), _Оператор: = xlFilterValues |
Когда мы выполняем код, мы получаем только строки с продуктом A и продуктом B, как вы можете видеть на изображении 4:
Изображение 4. Автофильтр с несколькими значениями критериев
Диапазон данных автофильтрации с несколькими критериями
Если вы хотите отфильтровать поле с несколькими критериями, вы должны использовать Критерии1 а также Критерии2 параметры, но и Оператор xlAnd.
В следующем примере мы отфильтруем первый столбец (Дата) для дат в декабре 2022 года. Следовательно, у нас есть два критерия: дата больше 01.12.18 и меньше 31.12.18. Это код:
1234 | Sheet1.Range ("A1: E1"). Поле автофильтра: = 1, _Criteria1: = "> = 12.01.2018", _Оператор: = xlAnd, _Criteria2: = "<= 31.12.2018" |
Когда мы выполняем код, вы можете видеть, что в диапазоне данных отображаются только даты в декабре:
Изображение 5. Автофильтр с несколькими критериями для поля
Значения параметров оператора метода автофильтрации
В следующей таблице. вы можете увидеть все возможные значения Оператор параметр метода Автофильтра и их описания:
Оператор | Описание |
xlAnd | Включает несколько критериев - Criteria1 и Criteria 2 |
xlOr | Включает один из нескольких критериев - Criteria1 или Criteria 2 |
xlTop10Items | Фильтрует определенное количество значений с наивысшим рейтингом (число, указанное в Criteria1) |
xlBottom10Items | Фильтрует определенное количество значений с самым низким рейтингом (число, указанное в Criteria1) |
xlTop10Percent | Отфильтровывает определенный процент значений с наивысшим рейтингом (%, указанный в Criteria1) |
xlBottom10Percent | Отфильтровывает определенный процент значений с самым низким рейтингом (%, указанный в Criteria1) |
xlFilterValues | Включает несколько значений критериев с массивом |
xlFilterCellColor | Фильтрует ячейки для цветов |
xlFilterFontColor | Фильтрует ячейки для цветов шрифта |
xlFIlterIcon | Значки фильтров |
xlFilterDynamic | Фильтровать динамические значения |