Функція Excel FILTER - динамічна фільтрація за допомогою формул

  • Поділитися Цим
Michael Brown

Зміст

У цьому короткому уроці ви дізнаєтеся, як динамічно фільтрувати в Excel за допомогою формул. Приклади для фільтрації дублікатів, комірок, що містять певний текст, за кількома критеріями та інше.

Як ви зазвичай фільтруєте в Excel? Здебільшого за допомогою Автофильтра, а в більш складних сценаріях - за допомогою Розширеного фільтра. Будучи швидкими і потужними, ці методи мають один істотний недолік - вони не оновлюються автоматично при зміні даних, а це означає, що вам доведеться очищати і фільтрувати заново. Впровадження функції ФІЛЬТР в Excel 365 стає довгоочікуваною альтернативоюНа відміну від них, формули Excel автоматично перераховуються при кожній зміні аркуша, тому вам потрібно буде налаштувати фільтр лише один раз!

    Функція ФІЛЬТР Excel

    Функція ФІЛЬТР в Excel використовується для фільтрації діапазону даних на основі заданих вами критеріїв.

    Функція відноситься до категорії функцій Динамічні масиви. Результатом роботи є масив значень, який автоматично розливається в діапазон комірок, починаючи з комірки, в яку вводиться формула.

    Синтаксис функції ФІЛЬТР наступний:

    FILTER(array, include, [if_empty])

    Де:

    • Масив (обов'язково) - діапазон або масив значень, які потрібно відфільтрувати.
    • Включає в себе (обов'язково) - критерії, що подаються у вигляді булевого масиву (значення TRUE та FALSE).

      Його висота (якщо дані розташовані в стовпчиках) або ширина (якщо дані розташовані в рядках) повинна дорівнювати висоті або ширині масив аргумент.

    • If_empty (необов'язково) - значення, що повертається, якщо жоден запис не відповідає критеріям.

    Функція ФІЛЬТР доступна тільки в Excel для Microsoft 365 і Excel 2021. В Excel 2019, Excel 2016 і більш ранніх версіях вона не підтримується.

    Базова формула ФІЛЬТРА Excel

    Для початку розглянемо кілька дуже простих прикладів, щоб краще зрозуміти, як працює формула Excel для фільтрації даних.

    З наведеного нижче набору даних, припустимо, ви хочете витягти записи з певним значенням в Група , стовпчик, скажімо, групи C. Для цього ми помістимо вираз B2:B13="C" в стовпчик включають який створить необхідний булевий масив, де TRUE відповідатиме значенням "C".

    =FILTER(A2:C13, B2:B13="C", "Немає результатів")

    На практиці зручніше вводити критерії в окрему комірку, наприклад, F1, і використовувати посилання на комірку замість того, щоб жорстко кодувати значення безпосередньо у формулі:

    =FILTER(A2:C13, B2:B13=F1, "Немає результатів")

    На відміну від функції "Фільтр" Excel, ця функція не вносить жодних змін у вихідні дані. Вона витягує відфільтровані записи у так званий діапазон розливу (E4:G7 на скріншоті нижче), починаючи з комірки, в яку введена формула:

    Якщо жоден запис не відповідає заданим критеріям, формула повертає значення, яке ви ввели в поле if_empty аргумент "Немає результатів" у цьому прикладі:

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

    =FILTER(A2:C13, B2:B13=F1, "")

    У випадку, якщо ваші дані впорядковані по горизонталі зліва направо, як показано на скріншоті нижче, функція ФІЛЬТР також буде добре працювати. Просто переконайтеся, що ви визначили відповідні діапазони для масив і включають щоб вихідний масив та булевий масив мали однакову ширину:

    =FILTER(B2:M4, B3:M3= B7, "Немає результатів")

    Функція ФІЛЬТР Excel - інструкція по використанню

    Щоб ефективно фільтрувати в Excel за допомогою формул, слід звернути увагу на кілька важливих моментів:

    • Функція ФІЛЬТР автоматично розливає результати по вертикалі або горизонталі на робочому аркуші, залежно від того, як організовані вихідні дані. Тому, будь ласка, переконайтеся, що у вас завжди достатньо порожніх клітинок внизу і праворуч, інакше ви отримаєте помилку #SPILL.
    • Результати функції ФІЛЬТР Excel є динамічними, тобто вони оновлюються автоматично при зміні значень у вихідному наборі даних. Однак, діапазон, що надається для функції ФІЛЬТР масив не оновлюється при додаванні нових записів до вихідних даних. Якщо ви бажаєте, щоб аргумент масив автоматично змінювати розмір, потім конвертувати його в таблицю Excel і будувати формули зі структурованими посиланнями або створювати динамічний іменований діапазон.

    Як фільтрувати в Excel - приклади формул

    Тепер, коли ви знаєте, як працює базова формула фільтрації в Excel, настав час дізнатися, як її можна розширити для вирішення більш складних завдань.

    Фільтр з декількома критеріями (логіка І)

    Для фільтрації даних за кількома критеріями необхідно вказати два або більше логічних виразів для включають аргумент:

    FILTER(array, ( діапазон1 = критерії1 ) * ( діапазон2 = критерії2 ), "Немає результатів")

    Операція множення обробляє масиви з І логіка гарантуючи, що тільки ті записи, які відповідають всі критерії Технічно це працює так:

    Результатом кожного логічного виразу є масив булевих значень, де TRUE дорівнює 1, а FALSE - 0. Потім елементи всіх масивів, що знаходяться на однакових позиціях, перемножуються. Оскільки множення на нуль завжди дає нуль, то в результуючий масив потрапляють тільки ті елементи, для яких всі критерії мають значення TRUE, і, відповідно, тільки ці елементи витягуються.

    Наведені нижче приклади демонструють цю загальну формулу в дії.

    Приклад 1. Фільтрація декількох стовпців в Excel

    Розширюючи нашу базову формулу ФІЛЬТР Excel трохи далі, відфільтруємо дані за двома стовпчиками: Група (колонка В) та Перемоги (колонка С).

    Для цього встановлюємо наступні критерії: вводимо назву цільової групи в F2 ( критерії1 ) і мінімально необхідну кількість перемог у F3 ( критерії2 ).

    Враховуючи, що наші вихідні дані мають формат А2:С13 ( масив ), групи знаходяться в В2:В13 ( діапазон1 ), а перемоги - в С2:С13 ( діапазон2 ), формула набуває такого вигляду:

    =FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "Немає результатів")

    В результаті ви отримаєте список гравців групи А, які здобули 2 і більше перемог:

    Приклад 2. Фільтрація даних між датами

    Перш за все, слід зазначити, що скласти універсальну формулу для фільтрації за датою в Excel неможливо. У різних ситуаціях потрібно буде по-різному будувати критерії, залежно від того, чи потрібно фільтрувати за конкретною датою, місяцем або роком. Мета цього прикладу - продемонструвати загальний підхід.

    До наших вибіркових даних додамо ще одну колонку з датами останнього виграшу (колонка D). І тепер виокремимо виграші, які відбулися в певний період, скажімо, з 17 по 31 травня.

    Звертаємо увагу, що в даному випадку обидва критерії застосовуються до одного і того ж діапазону:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Немає результатів")

    Де G2 та G3 - дати, між якими потрібно відфільтрувати.

    Фільтр з декількома критеріями (логіка АБО)

    Для вилучення даних на основі умови множинного АБО також використовуються логічні вирази, як показано в попередніх прикладах, але замість множення виконується їх підсумовування. При підсумовуванні булевих масивів, що повертаються виразами, в результуючому масиві буде 0 для записів, які не відповідають жодному з критеріїв (тобто всі критерії мають значення FALSE), і такі записи будуть відфільтровані. Записи, для яких припринаймні один з критеріїв є ІСТИНА, буде вилучено.

    Ось загальна формула для фільтрації стовпців з логікою АБО:

    FILTER(array, ( діапазон1 = критерії1 ) + ( діапазон2 = критерії2 ), "Немає результатів")

    Як приклад, наведемо список гравців, які мають той чи інший кількість перемог.

    Припускаючи, що вихідні дані знаходяться в діапазонах A2:C13, виграші - в діапазонах C2:C13, а номери виграшів, які нас цікавлять, знаходяться в діапазонах F2 і F3, формула буде виглядати наступним чином:

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Немає результатів")

    У підсумку, Ви знаєте, які гравці виграли всі ігри (4), а які не виграли жодної (0):

    Фільтр на основі декількох критеріїв "І" та "АБО

    У ситуації, коли потрібно застосувати обидва типи критеріїв, пам'ятайте просте правило: з'єднуйте критерії "І" зірочкою (*), а критерії "АБО" - знаком "плюс" (+).

    Наприклад, щоб повернути список гравців, які мають задану кількість перемог (F2) І належать до групи, зазначеної або в E2, або в E3, побудуйте наступний ланцюжок логічних виразів:

    =FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "Немає результатів")

    І ви отримаєте наступний результат:

    Як відфільтрувати дублікати в Excel

    При роботі з великими таблицями або при об'єднанні даних з різних джерел часто існує ймовірність того, що в них потраплять якісь дублікати.

    Якщо ви шукаєте відфільтрувати дублікати і витягти унікальні елементи, а потім використовувати функцію UNIQUE, як описано у вищезгаданому навчальному посібнику.

    Якщо ваша мета фільтрувати дублікати тобто витягти записи, які зустрічаються більше одного разу, то використовуйте функцію ФІЛЬТР разом з функцією СЧЕТЧИК.

    Ідея полягає в тому, щоб отримати кількість входжень для всіх записів і виділити ті, які більше 1. Щоб отримати кількість входжень, ви задаєте однаковий діапазон для кожного критерії_діапазон / критерії пара таких COUNTIF'ів:

    FILTER( масив , COUNTIFS( стовпчик1 , колонка 1, стовпчик2 , стовпчик2 )>1, "Немає результатів")

    Наприклад, щоб відфільтрувати повторювані рядки з даних в A2:C20 на основі значень у всіх 3 стовпчиках, слід використовувати таку формулу:

    =FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "Немає результатів")

    Порада. Щоб відфільтрувати дублікати на основі значень у полі ключові колонки включити тільки ці конкретні стовпці у функцію COUNTIFS.

    Як відфільтрувати пропуски в Excel

    Формула для відсіювання порожніх клітинок - це, по суті, варіація формули ФІЛЬТР Excel з декількома критеріями І. У цьому випадку ми перевіряємо, чи є в усіх (або окремих) стовпчиках дані, і виключаємо рядки, в яких хоча б одна клітинка порожня. Для виявлення непорожніх клітинок використовується оператор "не дорівнює" () разом з порожнім рядком (""), наприклад, таким чином:

    FILTER(array, ( стовпчик1 "") * ( стовпчик2 =""), "Немає результатів")

    Якщо вихідні дані знаходяться в комірках A2:C12, то для фільтрації рядків, що містять одну або декілька порожніх комірок, в комірку E3 вводиться наступна формула:

    Фільтр комірок, що містять певний текст

    Для вилучення комірок, що містять певний текст, можна використовувати функцію ФІЛЬТР разом з класичною функцією Если в комірці міститься формула:

    FILTER(array, ISNUMBER(SEARCH(" текст ", діапазон )), "Немає результатів")

    Ось як це працює:

    • Функція ПОИСК шукає заданий текстовий рядок в заданому діапазоні і повертає або число (позиція першого символу), або помилку #ЗНАЧ! (текст не знайдено).
    • Функція ISNUMBER перетворює всі числа в значення TRUE, а помилки в значення FALSE і передає отриманий булевий масив в функцію включають аргумент функції FILTER.

    Для цього прикладу ми додали Прізвища гравців у B2:B13, вводимо частину прізвища, яку ми хочемо знайти в G2, а потім використовуємо наступну формулу для фільтрації даних:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Немає результатів")

    В результаті формула повертає два прізвища, що містять "хань":

    Фільтрація та обчислення (Сума, Середнє, Мінімум, Максимум і т.д.)

    Цікава особливість функції ФІЛЬТР в Excel полягає в тому, що вона може не тільки витягувати значення з умовами, але і підсумовувати відфільтровані дані. Для цього комбінуйте ФІЛЬТР з функціями агрегування, такими як СУММА, СРЗНАЧ, СЧЕТ, МАКС або МИН.

    Наприклад, для агрегування даних по певній групі в F1 використовуйте наступні формули:

    Тотальна перемога:

    =SUM(FILTER(C2:C13, B2:B13=F1, 0))

    Перемагає середнячок:

    =AVERAGE(FILTER(C2:C13, B2:B13=F1, 0))

    Максимум перемог:

    =MAX(FILTER(C2:C13, B2:B13=F1, 0))

    Мінімум перемог:

    =MIN(FILTER(C2:C13, B2:B13=F1, 0))

    Зверніть увагу, що у всіх формулах ми використовуємо нульове значення для if_empty щоб формули повертали 0, якщо не буде знайдено жодного значення, що відповідає критеріям. Введення будь-якого тексту, наприклад, "Немає результатів", призведе до помилки #VALUE, що, очевидно, є останнім, чого ви хочете :)

    Формула ФІЛЬТРА, чутлива до регістру

    Стандартна формула ФІЛЬТР Excel не чутлива до регістру, тобто не розрізняє малі та великі літери. Щоб розрізнити регістр тексту, вкладіть функцію EXACT в включають Це змусить FILTER виконувати логічну перевірку з урахуванням регістру:

    FILTER(array, EXACT( діапазон , критерії ), "Немає результатів")

    Припустимо, у вас є обидві групи A і a і бажаєте вилучити записи, де групою є мала літера "а". Для цього використовуйте наступну формулу, де A2:C13 - вихідні дані, а B2:B13 - групи для фільтрації:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "Немає результатів")

    Як завжди, ви можете ввести цільову групу в заздалегідь визначену комірку, наприклад, F1, і використовувати посилання на цю комірку замість жорстко закодованого тексту:

    =FILTER(A2:C13, EXACT(B2:B13, F1), "Немає результатів")

    Як відфільтрувати дані і повернути тільки певні стовпці

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

    Приклад 1. Відфільтрувати кілька сусідніх стовпців

    У ситуації, коли ви хочете, щоб деякі сусідні стовпці з'явилися в результаті ФІЛЬТРУ, включіть тільки ці стовпці в масив оскільки саме цей аргумент визначає, які стовпці повертати.

    У базовому прикладі формули FILTER, припустимо, ви хочете повернути перші 2 стовпці ( Ім'я та прізвище і Група Отже, ви постачаєте A2:B13 для масив аргумент:

    =FILTER(A2:B13, B2:B13=F1, "Немає результатів")

    В результаті отримуємо список учасників цільової групи, визначеної в F1:

    Приклад 2. Фільтруємо несуміжні стовпці

    Щоб змусити функцію FILTER повертати несуміжні стовпці, скористайтеся цим хитрим прийомом:

    1. Складіть формулу ФІЛЬТР з потрібною умовою (умовами), використовуючи всю таблицю для масив .
    2. Вкладіть наведену вище формулу в іншу функцію FILTER. Для налаштування "обгортки" функції використовуйте константу масиву зі значеннями TRUE і FALSE або 1 і 0 для включають де TRUE (1) позначає стовпчики, які потрібно зберегти, а FALSE (0) - стовпчики, які потрібно виключити.

    Наприклад, повернути тільки Імена (1-й стовпчик) та Перемоги (3-й стовпчик), ми використовуємо {1,0,1} або {TRUE,FALSE,TRUE} для включають аргумент зовнішньої функції FILTER:

    =FILTER(FILTER(A2:C13, B2:B13=F1), {1,0,1})

    Або

    =FILTER(FILTER(A2:C13, B2:B13=F1), {TRUE,FALSE,TRUE})

    Як обмежити кількість рядків, що повертаються функцією FILTER

    Якщо ваша формула ФІЛЬТР знаходить досить багато результатів, але ваш робочий аркуш має обмежений простір і ви не можете видалити дані нижче, то ви можете обмежити кількість рядків, які повертає функція ФІЛЬТР.

    Давайте подивимося, як це працює на прикладі простої формули, яка витягує гравців з цільової групи в F1:

    =FILTER(A2:C13, B2:B13=F1)

    Вищенаведена формула виводить всі записи, які знайде, в нашому випадку 4 рядки. Але припустимо, що у вас є місце тільки для двох. Щоб вивести тільки перші 2 знайдених рядка, ось що потрібно зробити:

    • Підключіть формулу FILTER до масив аргумент функції INDEX.
    • Для row_num В якості аргументу INDEX використовуйте вертикальну константу масиву типу {1;2}, яка визначає, скільки рядків потрібно повернути (в нашому випадку - 2).
    • Для column_num використовуйте константу горизонтального масиву типу {1,2,3}, яка вказує, які стовпці повертати (перші 3 стовпці в даному прикладі).
    • Щоб подбати про можливі помилки, коли не буде знайдено даних, що відповідають вашим критеріям, ви можете обернути вашу формулу у функцію IFERROR.

    Повна формула має такий вигляд:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "Немає результату")

    При роботі з великими таблицями прописувати константи масиву вручну може бути досить громіздко. Не біда, функція SEQUENCE може згенерувати для вас порядкові номери автоматично:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), SEQUENCE(2), SEQUENCE(1, COLUMNS(A2:C13))), "No result")

    Перша ПОСЛІДОВНІСТЬ генерує вертикальний масив, що містить стільки послідовних номерів, скільки вказано в першому (і єдиному) аргументі. Друга ПОСЛІДОВНІСТЬ використовує функцію COLUMNS для підрахунку кількості стовпців у наборі даних і генерує еквівалентний горизонтальний масив.

    Порада. Щоб повернути дані з конкретні колонки не всі стовпці, в константі горизонтального масиву, яку ви використовуєте для column_num INDEX, включати тільки ці конкретні числа. Наприклад, щоб витягти дані з 1-го і 3-го стовпців, використовуйте {1,3}.

    Не працює функція ФІЛЬТР Excel

    У ситуації, коли ваша формула ФІЛЬТР Excel призводить до помилки, швидше за все, це буде одна з наступних причин:

    #CALC! помилка

    Відбувається, якщо опція if_empty опускається, а результатів, що задовольняють критеріям, не знайдено. Причина в тому, що на даний момент Excel не підтримує порожні масиви. Щоб запобігти подібним помилкам, обов'язково завжди визначайте аргумент if_empty значення у ваших формулах.

    #VALUE помилка

    Відбувається, коли масив і включають аргумент мають несумісні виміри.

    #N/A, #VALUE тощо.

    Можуть виникати різні помилки, якщо деяке значення в включають є помилкою або не може бути перетворений у булеве значення.

    #NAME помилка

    Виникає при спробі використання функції ФІЛЬТР у старій версії Excel. Будь ласка, пам'ятайте, що це нова функція, яка доступна тільки в Office 365 і Excel 2021.

    У новому Excel помилка #NAME виникає, якщо випадково неправильно написати ім'я функції.

    помилка #SPILL

    Найчастіше ця помилка виникає, якщо одна або кілька комірок в діапазоні розливу не повністю порожні. Щоб виправити її, просто очистіть або видаліть непорожні комірки. Для дослідження і вирішення інших випадків див. статтю Помилка #SPILL! в Excel: що це означає і як виправити.

    #REF! помилка

    Виникає, коли формула ФІЛЬТР використовується між різними книгами, а вихідна книга закрита.

    Ось так можна динамічно подавати дані в Excel. Дякую за увагу і сподіваюся побачити вас на нашому блозі наступного тижня!

    Завантажити робочий зошит з практики

    Фільтр в Excel з формулами (файл .xlsx)

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.