Autofilter vba excel
На этом шаге мы рассмотрим назначение и примеры использования этого метода .
Метод AutoFilter (Автофильтр) представляет собой простой способ запроса и фильтрации данных на рабочем листе. Если AutoFilter активизирован, то каждый заголовок поля выделенного диапазона данных превращается в поле с раскрывающимся списком. Выбирая запрос на вывод данных в поле с раскрывающимся списком, вы осуществляете вывод только тех записей, которые удовлетворяют указанным условиям. Поле с раскрывающимся списком содержит следующие типы условий:
- Все (All) ,
- Первые десять (Тор 10) ,
- Условие (Custom) ,
- конкретный элемент данных,
- Пустые (Blanks) и
- Непустые (NohBlanks) .
Вручную метод запускается посредством выбора команды Данные | Фильтр | Автофильтр (Data | Filter | AutoFilter) .
При применении метода AutoFilter допустимы два синтаксиса.
Аргумент | Назначение |
---|---|
field | Целое значение, указывающее поле, в котором производится фильтрация данных |
criteria1 и criteria2 | Задают два возможных условия фильтрации поля. Допускается использование строковой постоянной, например «101», и знаков отношений >, =, |
operator | Допустимые значения:
|
Таблица 1. Аргументы метода AutoFilter
При работе с фильтрами полезны метод ShowAllData и свойства FilterMode и AutoFilterMode .
- Метод ShowAllData — показывает все отфильтрованные и неотфильтрованные строки рабочего листа.
- Свойство FilterMode — допустимые значения: True (если на рабочем листе имеются отфильтрованные данные со скрытыми строками), False (в противном случае).
- Свойство AutoFilterMode — допустимые значения: True (если на рабочем листе выведены раскрывающиеся списки метода AutoFilter ), False (в противном случае).
Приведем соответствие между аргументами метода AutoFilter и выполнением команды Данные | Фильтр | Автофильтр (Data | Filter | AutoFilter) при фильтрации базы данных регистрации туристов.
- Выделяем диапазон A1:E1 , содержащий заголовки полей базы данных. Выберем команду Данные | Фильтр | Автофильтр (Data | Filter | AutoFilter) . В результате в заголовках полей появятся раскрывающиеся списки (рисунок 1).
Рис.1. Раскрывающиеся списки метода AutoFilter
В этих раскрывающихся списках предлагаются варианты допустимой фильтрации. В методе AutoFilter за диапазон с названиями полей отвечает объект, к которому применяется метод. В данном случае метод AutoFilter надо применить к диапазону Range(«A1:E1») .
- Отфильтруем в базе данных, например, только данные о клиентах, направляющихся в Афины (рисунок 2).
Рис.2. Фильтрация списка по критерию Афины
С этой целью в раскрывающемся списке поля Направление тура выберем Афины . В результате на рабочем листе будут выведены только записи, соответствующие турам в Афины. В методе AutoFilter за выбор поля, в котором производится фильтрация, отвечает аргумент Field . В данном случае для выбора поля Направление тура аргументу Field надо присвоить значение 4. За критерии, покоторым производится фильтрация, отвечают аргументы criteria1 и criteria2 . В данном случае фильтрация производилась по одному критерию — Афины , поэтому только аргументу criteria1 надо присвоить значение Афины . Таким образом, имеем:
Рис.3. Диалоговое окно Пользовательский автофильтр
Например, отфильтруем все туры в Афины и Берлин. В методе AutoFilter это соответствует присвоению аргументам criteria1 и criteria2 значений Афины и Берлин соответственно, а аргументу operator — значения хlOr , т.к. будут отображаться либо туры в Афины, либо в Берлин. Таким образом, имеем:
На следующем шаге мы рассмотрим метод AdvancedFilter .
Метод AutoFilter
Сажает на первую строку Автофильтр.
Проблема в том, что и снимается фильтр тем же кодом.
Иначе говоря, предположим, я хочу поставить фильтр, а он там уже стоит, получается, я его снимаю, вместо того, чтобы поставить.
И наоборот, надо поставить, а я снимаю.
Как это обойти, как узнать, стоит фильтр, или нет?
Visual Basic | |||||||||||||||||||||||||||||||||||||||
27.12.2017, 17:29 | |||||||||||||||||||||||||||||||||||||||
Метод Range.AutoFilter (Excel) Autofilter /For next/ Array autofilter в vba |
|||||||||||||||||||||||||||||||||||||||
27.12.2017, 17:46 | 2 | ||||||||||||||||||||||||||||||||||||||
|