Шаг 32.
VBA в MSExcel.
Методы объекта Range, использующие команды Excel. Метод AutoFilter

    На этом шаге мы рассмотрим назначение и примеры использования этого метода.

    Метод AutoFilter (Автофильтр) представляет собой простой способ запроса и фильтрации данных на рабочем листе. Если AutoFilter активизирован, то каждый заголовок поля выделенного диапазона данных превращается в поле с раскрывающимся списком. Выбирая запрос на вывод данных в поле с раскрывающимся списком, вы осуществляете вывод только тех записей, которые удовлетворяют указанным условиям. Поле с раскрывающимся списком содержит следующие типы условий:

    Вручную метод запускается посредством выбора команды Данные | Фильтр | Автофильтр (Data | Filter | AutoFilter).

    При применении метода AutoFilter допустимы два синтаксиса.

  1.   Объект.AutoFilter
    
    В этом случае метод AutoFilter выбирает или отменяет команду Данные | Фильтр | Автофильтр (Data | Filter | AutoFilter), примененную к диапазону, заданному в аргументе Объект.
  2.   Объект.AutoFilter(field, criteria1, operator, criteria2)
    
    В этом случае метод AutoFilter выполняет команду Данные | Фильтр | Автофильтр (Data | Filter | AutoFilter) по критериям, указанным в аргументе.

    Аргументы:

Таблица 1. Аргументы метода AutoFilter
Аргумент Назначение
field Целое значение, указывающее поле, в котором производится фильтрация данных
criteria1 и criteria2 Задают два возможных условия фильтрации поля. Допускается использование строковой постоянной, например "101", и знаков отношений >, < ,>=, <=, =, <>
operator Допустимые значения:
  • xlAnd (логическое объединение первого и второго критериев);
  • xlOr (логическое сложение первого и второго критериев);
  • xlTop10Items (для показа первых десяти элементов поля)

    При работе с фильтрами полезны метод ShowAllData и свойства FilterMode и AutoFilterMode.

    Приведем соответствие между аргументами метода AutoFilter и выполнением команды Данные | Фильтр | Автофильтр (Data | Filter | AutoFilter) при фильтрации базы данных регистрации туристов.

  1. Выделяем диапазон A1:E1, содержащий заголовки полей базы данных. Выберем команду Данные | Фильтр | Автофильтр (Data | Filter | AutoFilter). В результате в заголовках полей появятся раскрывающиеся списки (рисунок 1).


    Рис.1. Раскрывающиеся списки метода AutoFilter

        В этих раскрывающихся списках предлагаются варианты допустимой фильтрации. В методе AutoFilter за диапазон с названиями полей отвечает объект, к которому применяется метод. В данном случае метод AutoFilter надо применить к диапазону Range("A1:E1").

    1. Отфильтруем в базе данных, например, только данные о клиентах, направляющихся в Афины (рисунок 2).


      Рис.2. Фильтрация списка по критерию Афины

          С этой целью в раскрывающемся списке поля Направление тура выберем Афины. В результате на рабочем листе будут выведены только записи, соответствующие турам в Афины. В методе AutoFilter за выбор поля, в котором производится фильтрация, отвечает аргумент Field. В данном случае для выбора поля Направление тура аргументу Field надо присвоить значение 4. За критерии, покоторым производится фильтрация, отвечают аргументы criteria1 и criteria2. В данном случае фильтрация производилась по одному критерию — Афины, поэтому только аргументу criteria1 надо присвоить значение Афины. Таким образом, имеем:

        Range ("A1:E1").Select 
        Selection.AutoFilter
        Selection.AutoFilter Field:=4, Criteria1:="Афины"
      
    2. При фильтрации по условию появляется диалоговое окно Пользовательский автофильтр (Custom AutoFilter), позволяющее отфильтровать записи по двум критериям в одном поле (рисунок 3).


      Рис.3. Диалоговое окно Пользовательский автофильтр

          Например, отфильтруем все туры в Афины и Берлин. В методе AutoFilter это соответствует присвоению аргументам criteria1 и criteria2 значений Афины и Берлин соответственно, а аргументу operator — значения хlOr, т.к. будут отображаться либо туры в Афины, либо в Берлин. Таким образом, имеем:

        Range ("A1:E1").Select 
        Selection.AutoFilter 
        Selection.AutoFilter  Field:=4, Criteria1:="=Афины", Operator:=xlOr, _
          Criteria2 :="=Берлин"
      

    На следующем шаге мы рассмотрим метод AdvancedFilter.




Предыдущий шаг Содержание Следующий шаг