Розширений фільтр і трохи магії

Для переважної більшості користувачів Excel, коли в голові виникає слово «фільтрування даних», лише звичайний класичний фільтр із вкладки Дані – Фільтр (Дані — Фільтр):

Розширений фільтр і трохи магії

Такий фільтр, безсумнівно, звична річ, і для більшості випадків він підійде. Однак бувають ситуації, коли потрібно виконати фільтрацію за великою кількістю складних умов відразу в кількох стовпцях. Звичайний фільтр тут не дуже зручний і хочеться чогось потужнішого. Таким інструментом може бути вдосконалений фільтр, особливо з невеликою «доробкою напилком» (за традицією).

Основа

Для початку вставте кілька порожніх рядків над таблицею даних і скопіюйте туди заголовок таблиці – це буде діапазон умов (виділено жовтим для ясності):

Розширений фільтр і трохи магії

Між жовтими клітинками та вихідною таблицею має бути принаймні один порожній рядок.

Саме в жовті комірки потрібно ввести критерії (умови), за якими потім буде здійснюватися фільтрація. Наприклад, якщо вам потрібно вибрати банани в московському «Ашані» в III кварталі, то умови будуть виглядати так:

Розширений фільтр і трохи магії

Для фільтрації виберіть будь-яку комірку в діапазоні з вихідними даними, відкрийте вкладку дані І натисніть кнопку Додатково (Дані — Додатково). У вікні, що відкриється, діапазон з даними вже повинен бути автоматично введений і залишиться тільки вказати діапазон умов, тобто A1:I2:

Розширений фільтр і трохи магії

Зверніть увагу, що діапазон умов не можна виділяти «з запасом», тобто не можна виділяти зайві порожні жовті рядки, оскільки порожня клітинка в діапазоні умов сприймається Excel як відсутність критерію, а ціла порожня рядок як запит на відображення всіх даних без розбору.

перемикач Скопіюйте результат в інше місце дозволить відфільтрувати список не прямо на цьому аркуші (як у звичайному фільтрі), а вивантажити вибрані рядки в інший діапазон, який потім потрібно буде вказати в полі Помістіть результат у діапазон. У цьому випадку ми не використовуємо цю функцію, залишаємо Список фільтрів на місці і натисніть кнопку OK. Вибрані рядки будуть відображені на аркуші:

Розширений фільтр і трохи магії

Додавання макросу

«Ну де ж тут зручність?» запитаєте ви і будете праві. Потрібно не тільки руками ввести умови в жовті комірки, а й відкрити діалогове вікно, ввести туди діапазони, натиснути OK. Сумно, погоджуюсь! Але «все змінюється, коли вони приходять ©» – макроси!

Роботу з розширеним фільтром можна значно прискорити та спростити за допомогою простого макросу, який автоматично запускатиме розширений фільтр під час введення умов, тобто зміни будь-якої жовтої клітинки. Клацніть правою кнопкою миші вкладку поточного аркуша та виберіть команду Вихідний текст (Вихідний код). У вікні, що відкриється, скопіюйте та вставте наступний код:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A2:I5")) Is Nothing Then On Error Resume Next ActiveSheet.ShowAllData Range("A7").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange :=Діапазон("A1").CurrentRegion End If End Sub  

Ця процедура запускатиметься автоматично, коли буде змінено будь-яку клітинку на поточному аркуші. Якщо адреса зміненої комірки потрапляє в жовтий діапазон (A2:I5), то цей макрос видаляє всі фільтри (якщо такі є) і повторно застосовує розширений фільтр до таблиці вихідних даних, починаючи з A7, тобто все буде відфільтровано миттєво, негайно після введення наступної умови:

Так все набагато краще, правда? 🙂

Реалізація складних запитів

Тепер, коли все фільтрується на льоту, ми можемо трохи заглибитися в нюанси і розібрати механізми більш складних запитів у розширеному фільтрі. Окрім введення точних збігів, ви можете використовувати різні символи узагальнення (* та ?) і знаки математичної нерівності в ряді умов для здійснення приблизного пошуку. Регістр символів не має значення. Для наочності я зведено всі можливі варіанти в таблицю:

критерій Результат
гр* або гр усі клітинки, починаючи з GrIe Grвухо, Grбадьяк, Grанат і т.п.
= цибуля всі клітинки точно і тільки зі словом Лук, тобто точний збіг
*лів* або *лів клітини, що містять Лів як підкреслити, тобто ОЛівЩо, Лівep, ЗаЛів і т.п.
=p*v слова, що починаються з П і закінчується на В ie Ппершийв, Пефірв і т.п.
а*с слова, що починаються з А і далі містить СIe Апелсin, АНанас, Asai і т.п.
=*s слова, що закінчуються на С
=???? всі комірки з текстом з 4 символів (букви або цифри, включаючи пробіли)
=m??????n усі комірки з текстом із 8 символів, починаючи з М і закінчується на НIe Мandariн, Мнеспокійн  і т.п.
=*n??a всі слова, що закінчуються на А, де 4-та літера з кінця НIe Проміньнikа, Занozа і т.п.
>=e всі слова, що починаються з Э, Ю or Я
<>*о* всі слова, які не містять букви О
<>*вич всі слова, крім тих, що закінчуються на ВІЛ (наприклад, фільтрувати жінок за іменем по батькові)
= всі порожні клітинки
<> всі непорожні клітинки
> = 5000 усі клітинки зі значенням більше або рівним 5000
5 або =5 усі клітинки зі значенням 5
> = 3/18/2013 усі комірки з датою після 18 (включно)

Тонкі моменти:

  • Знак * означає будь-яку кількість будь-яких символів, а ? – будь-який символ.
  • Логіка обробки текстових і числових запитів дещо відрізняється. Так, наприклад, комірка умови з цифрою 5 не означає пошук усіх чисел, що починаються з п’ятірки, а комірка умови з літерою B дорівнює B*, тобто шукатиме будь-який текст, що починається з літери B.
  • Якщо текстовий запит не починається зі знака =, то можна подумки поставити * в кінці.
  • Дати потрібно вводити в американському форматі місяць-день-рік і через дріб (навіть якщо у вас є Excel і регіональні налаштування).

Логічні сполучники І-АБО

Умови, записані в різних клітинках, але в одному рядку, вважаються зв'язаними між собою логічним оператором И (І):

Розширений фільтр і трохи магії

Ті. фільтр банани у мене в третьому кварталі, саме в москві і заодно з ашану.

Якщо потрібно зв’язати умови за допомогою логічного оператора OR (АБО), то їх просто потрібно ввести в різні рядки. Наприклад, якщо нам потрібно знайти всі замовлення менеджера Воліна на московські персики і всі замовлення на цибулю в третьому кварталі в Самарі, то це можна вказати в ряді умов наступним чином:

Розширений фільтр і трохи магії

Якщо потрібно накласти дві або більше умов на один стовпець, то можна просто продублювати заголовок стовпця в діапазоні критеріїв і ввести під ним другий, третій і т.д. умови. Так, наприклад, ви можете вибрати всі транзакції з березня по травень:

Розширений фільтр і трохи магії

Загалом, після «кінчання з файлом» розширений фільтр виходить цілком пристойним інструментом, місцями не гірше класичного автофільтра.

  • Суперфільтр на макросах
  • Що таке макроси, куди і як вставити код макросу у Visual Basic
  • Розумні таблиці в Microsoft Excel

залишити коментар