На этом шаге мы рассмотрим назначение и пример использования этого метода.
Метод AdvancedFilter (Расширенный фильтр) является более мощным и универсальным средством фильтрации, чем метод AutoFilter. Он позволяет использовать фильтрацию по большему числу критериев, причем допустимо применение критериев, включающих формулы. Кроме того, метод AdvancedFilter позволяет фильтровать список с выводом результата фильтрации как непосредственно на том месте, где он расположен, так и в новое специфицированное место. Вручную метод запускается посредством выбора команды Данные | Фильтр | Расширенный фильтр (Data | Filter | Advanced Filter).
Синтаксис:
Объект.AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)
Аргументы:
Аргумент | Назначение |
---|---|
Action | Допустимые значения:: xlFilterInPiace (фильтровать список на месте) и xlFilterCopy (скопировать результат на новое место) |
CriteriaRange | Ссылка на диапазон с критериями |
CopyToRange | Если параметр Action принимает значение xlFilterCору, то он указывает диапазон, куда будет копироваться результат фильтрации |
Unique | Допустимые значения: True (отбирается только один вариант записи из многократно встречающихся в списке) и False (отбираются все встречающиеся записи) |
Приведем соответствие между аргументами метода AdvancedFilter и выполнением команды Данные | Фильтр | Расширенный фильтр (Data | Filter | Advanced Filter) при фильтрации базы данных регистрации туристов.
Рис.1. Фильтруемый список
Прежде чем выбирать команду Данные | Фильтр | Расширенный фильтр (Data | Filter | Advanced Filter), необходимо выполнить предварительные построения по созданию диапазона критериев. Верхняя строка диапазона критериев должна содержать заголовки полей фильтруемых данных. При этом нет необходимости включать все заголовки и сохранять их порядок. В диапазон критериев также должны входить строки с условиями фильтрации. Все условия в диапазоне критериев, записанные под заголовком поля, относятся к этому полю. При применении расширенного фильтра допустима запись нескольких условий в строке диапазона критериев. Условия, расположенные в одной строке, рассматриваются как условия, объединенные логической операцией И (And), а расположенные в нескольких — логической операцией ИЛИ (Or). В данном случае под диапазон критериев отведем диапазон A16:G17. В базе данных выберем записи обо всех мужчинах, которые едут в Лондон. С этой целью в ячейку С17 диапазона критериев введем значение муж, а в ячейку D17 — Лондон.
Рис.2. Диалоговое окно Расширенный фильтр
Range ("A1:G13").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A16:G17"), CopyToRange:=Range("A19:G19"), _ Unique:=False
На следующем шаге мы рассмотрим метод Consolidate.