Funkcja FILTER w Excelu - dynamiczne filtrowanie za pomocą formuł

  • Udostępnij To
Michael Brown

W tej szybkiej lekcji dowiesz się, jak dynamicznie filtrować w Excelu za pomocą formuł. Przykłady do filtrowania duplikatów, komórek zawierających określony tekst, z wieloma kryteriami i więcej.

Jak zwykle filtrujesz w Excelu? W większości przypadków za pomocą Auto Filtru, a w bardziej złożonych scenariuszach za pomocą Filtru Zaawansowanego. Jako szybkie i potężne, metody te mają jedną istotną wadę - nie aktualizują się automatycznie, gdy zmieniają się dane, co oznacza, że musiałbyś wyczyścić i przefiltrować ponownie. Wprowadzenie funkcji FILTR w Excelu 365 staje się długo oczekiwaną alternatywą dlaW przeciwieństwie do nich, formuły Excela przeliczają się automatycznie przy każdej zmianie arkusza, więc musisz skonfigurować swój filtr tylko raz!

    Funkcja FILTER w programie Excel

    Funkcja FILTR w programie Excel służy do filtrowania zakresu danych na podstawie określonych przez użytkownika kryteriów.

    Funkcja należy do kategorii funkcji Dynamic Arrays. W wyniku jej działania powstaje tablica wartości, która automatycznie rozlewa się na zakres komórek, począwszy od komórki, w której wpisujemy formułę.

    Składnia funkcji FILTER jest następująca:

    FILTER(array, include, [if_empty])

    Gdzie:

    • Array (wymagane) - zakres lub tablica wartości, które chcesz filtrować.
    • Włącz (wymagane) - kryteria dostarczone jako tablica Boolean (wartości TRUE i FALSE).

      Jego wysokość (gdy dane są w kolumnach) lub szerokość (gdy dane są w wierszach) musi być równa wysokości macierz argument.

    • Jeśli_pusty (opcjonalne) - wartość, która zostanie zwrócona, jeżeli żaden z wpisów nie spełnia kryteriów.

    Funkcja FILTER jest dostępna tylko w programie Excel dla Microsoft 365 i Excel 2021. W programie Excel 2019, Excel 2016 i wcześniejszych wersjach nie jest obsługiwana.

    Podstawowa formuła programu Excel FILTER

    Na początek omówmy kilka bardzo prostych przypadków tylko po to, aby lepiej zrozumieć, jak działa formuła Excela do filtrowania danych.

    Z poniższego zestawu danych, zakładając, że chcesz wyodrębnić rekordy z określoną wartością w Grupa kolumny, powiedzmy grupy C. Aby to zrobić, dostarczamy wyrażenie B2:B13="C" do włącz argument, który wytworzy wymaganą tablicę Boolean, z TRUE odpowiadającą wartościom "C".

    =FILTER(A2:C13, B2:B13="C", "Brak wyników")

    W praktyce wygodniej jest wprowadzić kryteria do osobnej komórki, np. F1, i użyć odwołania do komórki zamiast hardcodować wartość bezpośrednio w formule:

    =FILTER(A2:C13, B2:B13=F1, "Brak wyników")

    W przeciwieństwie do funkcji Filtr w Excelu, funkcja nie wprowadza żadnych zmian w oryginalnych danych. Wyodrębnia przefiltrowane rekordy do tzw. zakresu rozlanego (E4:G7 na poniższym zrzucie ekranu), zaczynając od komórki, w której wprowadzono formułę:

    Jeśli żadne rekordy nie spełniają określonych kryteriów, formuła zwraca wartość wprowadzoną w polu jeśli_pusty argument, w tym przykładzie "Brak wyników":

    Jeśli wolisz nie zwracać nic w tym przypadku, to podaj pusty łańcuch ("") jako ostatni argument:

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

    W przypadku, gdy twoje dane są zorganizowane poziomo od lewej do prawej, jak pokazano na poniższym zrzucie ekranu, funkcja FILTER również będzie działać ładnie. Upewnij się tylko, że zdefiniowałeś odpowiednie zakresy dla macierz oraz włącz argumenty, tak aby tablica źródłowa i tablica Boolean miały tę samą szerokość:

    =FILTER(B2:M4, B3:M3= B7, "Brak wyników")

    Funkcja FILTER w programie Excel - uwagi dotyczące użytkowania

    Aby skutecznie filtrować w Excelu za pomocą formuł, oto kilka ważnych punktów, na które należy zwrócić uwagę:

    • Funkcja FILTER automatycznie rozsypuje wyniki w pionie lub poziomie arkusza, w zależności od tego, jak zorganizowane są twoje oryginalne dane. Dlatego upewnij się, że zawsze masz wystarczająco dużo pustych komórek w dół i w prawo, w przeciwnym razie otrzymasz błąd #SPILL.
    • Wyniki funkcji FILTRACJA w Excelu są dynamiczne, co oznacza, że aktualizują się automatycznie, gdy zmieniają się wartości w oryginalnym zestawie danych. Jednak zakres podany dla funkcji macierz nie jest aktualizowany w momencie dodania nowych wpisów do danych źródłowych. Jeśli chcesz, aby argument macierz aby automatycznie zmienić rozmiar, a następnie przekonwertować go na tabelę programu Excel i zbudować formuły z odniesieniami strukturalnymi lub utworzyć dynamiczny zakres nazwany.

    Jak filtrować w Excelu - przykłady formuł

    Teraz, gdy już wiesz, jak działa podstawowa formuła filtra w Excelu, czas zapoznać się z tym, jak można ją rozszerzyć w celu rozwiązywania bardziej złożonych zadań.

    Filtr z wieloma kryteriami (logika AND)

    Aby filtrować dane za pomocą wielu kryteriów, podajesz dwa lub więcej wyrażeń logicznych dla włącz argument:

    FILTER(array, ( zakres1 = kryteria1 ) * ( zakres2 = kryteria2 ), "Brak wyników")

    Operacja mnożenia przetwarza tablice za pomocą Logika AND , zapewniając, że tylko te rekordy, które spełniają wszystkie kryteria są zwracane. Technicznie rzecz biorąc, działa to w ten sposób:

    Wynikiem każdego wyrażenia logicznego jest tablica wartości boolowskich, gdzie TRUE równa się 1, a FALSE - 0. Następnie mnoży się elementy wszystkich tablic na tych samych pozycjach. Ponieważ mnożenie przez zero zawsze daje zero, do tablicy wynikowej trafiają tylko te elementy, dla których wszystkie kryteria są TRUE, a w konsekwencji tylko te elementy są wyodrębniane.

    Poniższe przykłady pokazują tę ogólną formułę w działaniu.

    Przykład 1. Filtrowanie wielu kolumn w programie Excel

    Rozszerzając naszą podstawową formułę Excel FILTER nieco dalej, przefiltrujmy dane według dwóch kolumn: Grupa (kolumna B) oraz Wygrana (kolumna C).

    W tym celu ustalamy następujące kryteria: w polu F2 wpisujemy nazwę grupy docelowej ( kryteria1 ) oraz minimalnej wymaganej liczby zwycięstw w F3 ( kryteria2 ).

    Biorąc pod uwagę, że nasze dane źródłowe są w A2:C13 ( macierz ), grupy znajdują się w B2:B13 ( zakres1 ), a zwycięstwa są w C2:C13 (. zakres2 ), wzór przyjmuje taką postać:

    =FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "Brak wyników")

    W efekcie otrzymujemy listę graczy w grupie A, którzy zapewnili sobie 2 lub więcej zwycięstw:

    Przykład 2. Filtrowanie danych pomiędzy datami

    Po pierwsze, należy zauważyć, że nie można wymyślić ogólnej formuły do filtrowania według daty w Excelu. W różnych sytuacjach trzeba będzie budować kryteria inaczej, w zależności od tego, czy chcemy filtrować według konkretnej daty, według miesiąca, czy według roku. Celem tego przykładu jest zademonstrowanie ogólnego podejścia.

    Do naszych przykładowych danych dodajemy jeszcze jedną kolumnę zawierającą daty ostatniego zwycięstwa (kolumna D). I teraz wyodrębnimy zwycięstwa, które miały miejsce w określonym okresie, powiedzmy między 17 a 31 maja.

    Zauważ, że w tym przypadku oba kryteria dotyczą tego samego zakresu:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Brak wyników")

    Gdzie G2 i G3 są datami do filtrowania pomiędzy.

    Filtr z wieloma kryteriami (logika OR)

    Aby wyodrębnić dane na podstawie warunku wielokrotnego OR, również używasz wyrażeń logicznych, jak pokazano w poprzednich przykładach, ale zamiast mnożyć, dodajesz je. Kiedy tablice boolowskie zwrócone przez wyrażenia są sumowane, wynikowa tablica będzie miała 0 dla wpisów, które nie spełniają żadnych kryteriów (tj. wszystkie kryteria są FALSE), a takie wpisy będą odfiltrowane. Wpisy, dla których przyprzynajmniej jedno kryterium jest TRUE zostanie wyodrębnione.

    Oto ogólna formuła do filtrowania kolumn za pomocą logiki OR:

    FILTER(array, ( zakres1 = kryteria1 ) + ( zakres2 = kryteria2 ), "Brak wyników")

    Jako przykład, wyodrębnijmy listę zawodników, którzy mają to czy tamto liczba zwycięstw.

    Zakładając, że dane źródłowe znajdują się w A2:C13, zwycięstwa w C2:C13, a interesujące nas numery zwycięstw w F2 i F3, formuła przebiegałaby następująco:

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Brak wyników")

    W rezultacie wiesz, którzy zawodnicy wygrali wszystkie mecze (4), a którzy żadnego (0):

    Filtrowanie na podstawie wielu kryteriów AND oraz OR

    W sytuacji, gdy musisz zastosować oba typy kryteriów, pamiętaj o tej prostej zasadzie: połącz kryteria AND z gwiazdką (*) i OR ze znakiem plusa (+).

    Na przykład, aby zwrócić listę graczy, którzy mają daną liczbę zwycięstw (F2) ORAZ należą do grupy wymienionej w E2 LUB E3, zbuduj następujący łańcuch wyrażeń logicznych:

    =FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "Brak wyników")

    I otrzymasz następujący wynik:

    Jak filtrować duplikaty w programie Excel

    Podczas pracy z ogromnymi arkuszami lub łączenia danych z różnych źródeł często istnieje możliwość, że wkradną się jakieś duplikaty.

    Jeśli szukasz odfiltrować się duplikaty i wyodrębnij unikalne elementy, a następnie użyj funkcji UNIQUE, jak wyjaśniono w wyżej połączonym samouczku.

    Jeśli twoim celem jest filtrować duplikaty , czyli wyodrębnić wpisy występujące więcej niż raz, a następnie użyć funkcji FILTER wraz z COUNTIFS.

    Chodzi o to, aby uzyskać liczbę wystąpień dla wszystkich rekordów i wyodrębnić te większe niż 1. Aby uzyskać liczbę wystąpień, podajesz ten sam zakres dla każdego z nich kryteria_zakresu / kryteria para COUNTIFS jak to:

    FILTR( macierz , COUNTIFS( kolumna1 , kolumna1, kolumna2 , kolumna2 )>1, "Brak wyników")

    Na przykład, aby filtrować zduplikowane wiersze z danych w A2:C20 na podstawie wartości we wszystkich 3 kolumnach, oto formuła do użycia:

    =FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "Brak wyników")

    Wskazówka. Aby filtrować duplikaty na podstawie wartości w kluczowe kolumny , uwzględnij tylko te konkretne kolumny w funkcji COUNTIFS.

    Jak odfiltrować puste miejsca w programie Excel

    Formuła odfiltrowująca puste komórki jest w istocie odmianą formuły Excel FILTER z wieloma kryteriami AND. W tym przypadku sprawdzamy, czy wszystkie (lub poszczególne) kolumny mają w sobie jakieś dane i wykluczamy wiersze, w których przynajmniej jedna komórka jest pusta. Aby zidentyfikować komórki niebędące pustymi, używasz operatora "not equal to" () wraz z pustym ciągiem (""), jak poniżej:

    FILTER(array, ( kolumna1 "") * ( kolumna2 =""), "Brak wyników")

    Mając dane źródłowe w A2:C12, aby odfiltrować wiersze zawierające jedną lub więcej pustych komórek, w E3 wpisujemy następującą formułę:

    Filtrowanie komórek zawierających określony tekst

    Aby wyodrębnić komórki zawierające określony tekst, można użyć funkcji FILTRUJ wraz z klasyczną formułą Jeżeli komórka zawiera:

    FILTER(array, ISNUMBER(SEARCH(" tekst ", zakres )), "Brak wyników")

    Oto jak to działa:

    • Funkcja SZUKAJ szuka określonego ciągu tekstowego w podanym zakresie i zwraca albo liczbę (pozycję pierwszego znaku) albo błąd #VALUE! (tekst nie został znaleziony).
    • Funkcja ISNUMBER konwertuje wszystkie liczby na TRUE, a błędy na FALSE i przekazuje wynikową tablicę Boolean do włącz argument funkcji FILTER.

    Dla tego przykładu, dodaliśmy Nazwiska zawodników w B2:B13, wpisujemy część nazwiska, którą chcemy znaleźć w G2, a następnie używamy poniższej formuły do filtrowania danych:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Brak wyników")

    W rezultacie formuła pobiera dwa nazwiska zawierające "han":

    Filtrowanie i obliczanie (Suma, Średnia, Min, Max, itp.)

    Fajną rzeczą w funkcji FILTER w Excelu jest to, że może ona nie tylko wyodrębnić wartości z warunkami, ale także podsumować przefiltrowane dane. W tym celu połącz FILTER z funkcjami agregującymi, takimi jak SUM, AVERAGE, COUNT, MAX lub MIN.

    Na przykład, aby zagregować dane dla określonej grupy w F1, użyj następujących formuł:

    Łącznie zwycięstwa:

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

    Średnia wygranych:

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

    Maksymalne wygrane:

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

    Minimalne zwycięstwa:

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

    Proszę zwrócić uwagę, że we wszystkich wzorach używamy zera dla jeśli_pusty Podanie dowolnego tekstu, takiego jak "Brak wyników", spowodowałoby błąd #VALUE, co jest oczywiście ostatnią rzeczą, której chcesz :)

    Formuła FILTER z rozróżnianiem wielkości liter

    Standardowa formuła FILTR jest niewrażliwa na wielkość liter, co oznacza, że nie rozróżnia małych i dużych liter. Aby rozróżnić wielkość tekstu, należy zagnieździć funkcję EXACT w włącz argument. To zmusi FILTER do wykonania testu logicznego w sposób wrażliwy na wielkość liter:

    FILTR(tablica, EXACT( zakres , kryteria ), "Brak wyników")

    Zakładając, że masz obie grupy A oraz a i chcesz wyodrębnić rekordy, w których grupą jest mała litera "a". Aby to zrobić, użyj następującej formuły, gdzie A2:C13 to dane źródłowe, a B2:B13 to grupy do filtrowania:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "Brak wyników")

    Jak zwykle, możesz wprowadzić grupę docelową do predefiniowanej komórki, powiedzmy F1, i użyć tego odwołania do komórki zamiast tekstu hardcoded:

    =FILTER(A2:C13, EXACT(B2:B13, F1), "Brak wyników")

    Jak FILTROWAĆ dane i zwracać tylko określone kolumny

    W przeważającej części filtrowanie wszystkich kolumn za pomocą pojedynczej formuły jest tym, czego chcą użytkownicy Excela. Ale jeśli twoja tabela źródłowa zawiera dziesiątki lub nawet setki kolumn, z pewnością możesz chcieć ograniczyć wyniki do kilku najważniejszych.

    Przykład 1. Filtrowanie niektórych sąsiednich kolumn

    W sytuacji, gdy chcemy, aby w wyniku FILTROWANIA pojawiły się sąsiadujące ze sobą kolumny, należy uwzględnić tylko te kolumny w macierz ponieważ to właśnie ten argument określa, które kolumny mają zostać zwrócone.

    W podstawowym przykładzie formuły FILTER, zakładając, że chcesz zwrócić 2 pierwsze kolumny ( Nazwa oraz Grupa ). Zatem, dostarczasz A2:B13 dla macierz argument:

    =FILTER(A2:B13, B2:B13=F1, "Brak wyników")

    Jako wynik otrzymujemy listę uczestników grupy docelowej zdefiniowanej w F1:

    Przykład 2. Filtrowanie kolumn nie sąsiadujących ze sobą

    Aby sprawić, że funkcja FILTER zwróci kolumny nie sąsiadujące ze sobą, użyj tej sprytnej sztuczki:

    1. Utwórz formułę FILTER z żądanym warunkiem (warunkami), używając całej tabeli dla macierz .
    2. Zagnieżdż powyższą formułę wewnątrz innej funkcji FILTER. Aby skonfigurować funkcję "wrapper", użyj stałej tablicowej wartości TRUE i FALSE lub 1 i 0 dla funkcji włącz argument, gdzie TRUE (1) oznacza kolumny, które mają być zachowane, a FALSE (0) oznacza kolumny, które mają być wykluczone.

    Na przykład, aby zwrócić tylko Nazwy (kolumna pierwsza) oraz Wygrana (3 kolumna), używamy {1,0,1} lub {TRUE,FALSE,TRUE} dla włącz argument zewnętrznej funkcji FILTER:

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

    Albo

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

    Jak ograniczyć liczbę wierszy zwracanych przez funkcję FILTER

    Jeśli Twoja formuła FILTER znajduje dość dużo wyników, ale Twój arkusz ma ograniczone miejsce i nie możesz usunąć danych poniżej, to możesz ograniczyć liczbę wierszy, które zwraca funkcja FILTER.

    Zobaczmy jak to działa na przykładzie prostej formuły, która ściąga graczy z grupy docelowej w F1:

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

    Powyższa formuła wypisuje wszystkie znalezione rekordy, czyli w naszym przypadku 4 wiersze. Załóżmy jednak, że masz miejsce tylko na dwa. Aby wypisać tylko pierwsze 2 znalezione wiersze, należy zrobić to w następujący sposób:

    • Wstaw formułę FILTER do macierz argument funkcji INDEX.
    • Dla suma wierszy argumentu INDEX, użyj pionowej stałej tablicowej jak {1;2}. Określa ona ile wierszy ma zostać zwróconych (w naszym przypadku 2).
    • Dla kolumna_num argument, użyj poziomej stałej tablicowej, takiej jak {1,2,3}. Określa ona, które kolumny mają zostać zwrócone (pierwsze 3 kolumny w tym przykładzie).
    • Aby zadbać o ewentualne błędy, gdy nie zostaną znalezione dane odpowiadające Twoim kryteriom, możesz zawinąć swoją formułę w funkcję IFERROR.

    Pełna formuła przyjmuje taką postać:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "Brak wyniku")

    Podczas pracy z dużymi tablicami ręczne pisanie stałych tablicowych może być dość kłopotliwe. Nie ma problemu, funkcja SEQUENCE może automatycznie wygenerować numery porządkowe:

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

    Pierwsza SEKWENCJA generuje pionową tablicę zawierającą tyle numerów porządkowych, ile podano w pierwszym (i jedynym) argumencie. Druga SEKWENCJA wykorzystuje funkcję KOLUMNY do policzenia liczby kolumn w zbiorze danych i tworzy równoważną tablicę poziomą.

    Wskazówka. Aby zwrócić dane z specyficzne kolumny nie wszystkie kolumny, w poziomej stałej tablicowej, której używasz dla kolumna_num argumentu INDEX, uwzględnij tylko te konkretne liczby. Na przykład, aby wydobyć dane z pierwszej i trzeciej kolumny, użyj {1,3}.

    Funkcja FILTER w programie Excel nie działa

    W sytuacji, gdy Twoja formuła FILTER w Excelu spowoduje błąd, najprawdopodobniej będzie to jedna z poniższych sytuacji:

    #CALC! błąd

    Występuje, jeśli opcjonalny jeśli_pusty W przypadku pominięcia tego argumentu nie zostaną znalezione wyniki spełniające kryteria. Powodem jest to, że obecnie Excel nie obsługuje pustych tablic. Aby zapobiec takim błędom, należy zawsze definiować tablicę jeśli_pusty w swoich formułach.

    #Błąd wartości

    Występuje, gdy macierz oraz włącz argumentu mają nieprzystające do siebie wymiary.

    #N/A, #VALUE, etc.

    Różne błędy mogą wystąpić, jeśli jakaś wartość w włącz argument jest błędem lub nie można go przekonwertować na wartość boolowską.

    #błąd NAME

    Występuje przy próbie użycia funkcji FILTER w starszej wersji Excela. Należy pamiętać, że jest to nowa funkcja, która jest dostępna tylko w Office 365 i Excelu 2021.

    W nowym Excelu pojawia się błąd #NAME, jeśli przypadkowo źle wpiszesz nazwę funkcji.

    #BłądSPILL

    Najczęściej ten błąd występuje, jeśli jedna lub więcej komórek w zakresie rozlanym nie jest całkowicie pusta. Aby go naprawić, po prostu wyczyść lub usuń niepuste komórki. Aby zbadać i rozwiązać inne przypadki, zobacz #SPILL! błąd w programie Excel: co oznacza i jak naprawić.

    #REF! błąd

    Występuje, gdy formuła FILTR jest używana między różnymi skoroszytami, a źródłowy skoroszyt jest zamknięty.

    Tak wygląda dynamiczne filtrowanie danych w Excelu. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!

    Pobierz zeszyt ćwiczeń

    Filtrowanie w Excelu za pomocą formuł (plik .xlsx)

    Michael Brown jest oddanym entuzjastą technologii z pasją do upraszczania złożonych procesów za pomocą narzędzi programowych. Dzięki ponad dziesięcioletniemu doświadczeniu w branży technologicznej doskonalił swoje umiejętności w programach Microsoft Excel i Outlook, a także w Arkuszach i Dokumentach Google. Blog Michaela jest poświęcony dzieleniu się swoją wiedzą i doświadczeniem z innymi, dostarczając łatwych do zastosowania wskazówek i samouczków w celu poprawy produktywności i wydajności. Niezależnie od tego, czy jesteś doświadczonym profesjonalistą, czy początkującym, blog Michaela oferuje cenne spostrzeżenia i praktyczne porady dotyczące maksymalnego wykorzystania tych niezbędnych narzędzi programowych.