Метод Range.AutoFilter (Excel)

Фильтрует список с помощью автофильтра.

Синтаксис

выражение.AutoFilter (Field, Criteria1, Operator, Criteria2, SubField, VisibleDropDown)

выражение: выражение, возвращающее объект Range.

Параметры

Имя Обязательный или необязательный Тип данных Описание
Field Необязательный Variant Целочисленное смещение поля, на основе которого требуется создать фильтр (слева от списка; крайнее левое поле — значение 1).
Criteria1 Необязательный Variant Условия (строка, например "101"). Используйте "=" для поиска пустых полей, "<>" для поиска непустых полей и "><" для выбора полей (Нет данных) в типах данных.

Если этот аргумент пропущен, все условия имеют значение All. Если параметру Operator присвоено значение xlTop10Items, параметр Criteria1 указывает количество элементов (например, "10").
Operator Необязательный XlAutoFilterOperator Константа XlAutoFilterOperator, указывающая тип фильтра.
Criteria2 Необязательный Variant Второе условие (строка). Используется с параметрами Criteria1 и Operator для создания составных условий. Также используется в качестве одного условия для полей даты, фильтруемых по дате, месяцу или году. За ним следует массив, уточняющий фильтрацию Массив(Уровень, Дата), где "Уровень" принимает значения 0–2 (год,месяц,дата), а "Дата" — одна допустимая дата в периоде фильтрации.
SubField Необязательный Variant Поле из типа данных, для которого применяются условия (например, поле Population из типа Geography или поле Volume из типа Stocks). Пропуск этого значения указывает на "(отображаемое значение)".
VisibleDropDown Необязательный Variant Значение True, чтобы отобразить стрелку раскрывающегося списка автофильтра для фильтруемого поля. Значение False, чтобы скрыть стрелку раскрывающегося списка автофильтра для фильтруемого поля. По умолчанию используется значение True.

Возвращаемое значение

Variant

Примечания

Если опустить все аргументы, этот метод просто переключает отображение стрелок раскрывающихся списков автофильтров в указанном диапазоне.

В Excel для Mac этот метод не поддерживается. Поддерживаются аналогичные методы для Selection и ListObject.

В отличие от формул, во вложенных полях не требуется использовать квадратные скобки для добавления пробелов.

Пример

В этом примере выполняется фильтрация списка, начинающегося в ячейке A1 на листе "Лист1", чтобы отображались только те записи, в которых первое поле содержит строку "Otis". Стрелка раскрывающегося списка для поля 1 будет скрыта.

Worksheets("Sheet1").Range("A1").AutoFilter _
 Field:=1, _
 Criteria1:="Otis", _
 VisibleDropDown:=False

В этом примере выполняется фильтрация списка, начинающегося с ячейки A1 на листе "Лист1", для отображения только тех записей, в которых значения первого поля содержат вложенное поле Admin Division 1 (State/province/other) со значением "Washington".

Worksheets("Sheet1").Range("A1").AutoFilter _
 Field:=1, _
 Criteria1:="Washington", _
 SubField:="Admin Division 1 (State/province/other)"

В этом примере выполняется фильтрация таблицы "Таблица1" на листе "Лист1" для отображения только тех записей, в которых значения первого поля соответствуют отображаемому значению: 1, 3, Seattle или Redmond.

Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria1:=Array("1", "3", "Seattle", "Redmond"), _
 Operator:=xlFilterValues

Типы данных могут применять несколько фильтров вложенных полей. В этом примере выполняется фильтрация таблицы "Таблица1" на листе "Лист1" для отображения только тех записей, в которых значения первого поля содержат вложенное поле Time zone(s) со значением "Pacific Time Zone", а вложенное поле Date Founded содержит значение 1851 или "(No Data)".

Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria1:="Pacific Time Zone", _
 SubField:="Time Zone(s)"
Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria1:=Array("1851", "><"), _
 Operator:=xlFilterValues, _
 SubField:="Date founded"

В этом примере выполняется фильтрация таблицы "Таблица1" на листе "Лист1" для отображения первых 10 записей для первого поля на основе вложенного поля Population.

Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria1:="10", _
 Operator:=xlTop10Items, _
 SubField:="Population"

В этом примере выполняется фильтрация таблицы "Таблица1" на листе "Лист1" для отображения всех записей января и февраля 2019 г. для поля 1. При этом не требуется наличие строки, содержащей 31 января.

Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter _
 Field:=1, _
 Criteria2:=Array(1, "1/31/2019", 1, "2/28/2019") 

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.