Для отбора данных с помощью расширенного фильтра необходимо кроме основной таблицы (исходного диапазона, содержащего данные для отбора) сформировать диапазон условий, который представляет собой таблицу, в которой строка заголовков содержит те же заголовки, что и исходный диапазон (некоторые заголовки могут быть пропущены, а другие могут повторяться), причем написание заголовков должно в точности совпадать в обеих таблицах, а вместо данных в ячейках этой таблицы должны содержаться условия отбора информации по соответствующим полям.
Условия, сформированные в ячейках одной строки диапазона условий, объединяются при выполнении команды расширенного фильтра логической операцией «И», а условия, размещенные в различных строках – операцией «ИЛИ».
Для поиска данных о сотрудниках пенсионного возраста необходимо сформировать следующие условия в диапазоне условий:
ФИО
Пол
Год рождения
Должность
м
<=1941
ж
<=1946
Причем столбик «ФИО» и «Должность» можно было бы и опустить, так как значения, находящиеся в этих столбиках в исходном диапазоне, не влияют на условия отбора.
Формировать диапазон условий лучше выше или ниже основной таблицы, но не рядом, так как при срабатывании фильтра строки таблицы, не удовлетворяющие критериям отбора скрываются, а значит, могут оказаться скрытыми и некоторые условия.
Сформировав диапазон условий и установив рамку выделения на ячейку в исходном диапазоне, можно выполнить команду Фильтр8Расширенный фильтр…в меню данные. В диалоговом окне команды задаются ее параметры: исходный диапазон и диапазон условий, где должны размещаться результаты отбора (нужно ли их копировать в другое место и куда именно), отбирать ли только уникальные записи (строки) или допускается повторение.
Вызвать расширенный фильтр для приведенного примера можно с помощью команды
Range("A1:D6").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("A10:D12"), _
CopyToRange:=Range("A15"), Unique:=False
(диапазон условий размещается ниже основной таблицы, начиная со строки с номером 10, а результаты копируются на тот же лист, располагаясь, начиная со строки с номером 15).
В результате выполнения команды в диапазоне A15:D18 автоматически формаруется таблица
Если бы требовалось выбрать сотрудников, дата рождения которых попадает в заданный диапазон (например с 1940 по 1960 годы), то при формировании диапазона условий пришлось бы повторить столбец «Год рождения», так как два условия, налагаемых на значения поля должны соединяться логической операцией «И»:
Год рождения
Год рождения
>=1940
<=1960
Расширенный фильтр позволяет выполнить отбор информации по сколь угодно сложным критериям.