Funkce Excel FILTER - dynamické filtrování pomocí vzorců

  • Sdílet Toto
Michael Brown

V této rychlé lekci se naučíte, jak v aplikaci Excel dynamicky filtrovat pomocí vzorců. Příklady na filtrování duplicit, buněk obsahujících určitý text, s více kritérii a další.

Jak obvykle filtrujete v Excelu? Většinou pomocí automatického filtru a ve složitějších scénářích pomocí pokročilého filtru. Tyto metody jsou rychlé a výkonné, ale mají jednu podstatnou nevýhodu - neaktualizují se automaticky při změně dat, což znamená, že byste je museli vyčistit a filtrovat znovu. Zavedení funkce FILTR v aplikaci Excel 365 se stává dlouho očekávanou alternativou k funkci FILTR.běžné funkce. Na rozdíl od nich se vzorce Excelu přepočítávají automaticky při každé změně listu, takže filtr stačí nastavit jen jednou!

    Funkce Excel FILTER

    Funkce FILTR v aplikaci Excel slouží k filtrování rozsahu dat na základě zadaných kritérií.

    Funkce patří do kategorie funkcí dynamických polí. Výsledkem je pole hodnot, které se automaticky rozsype do řady buněk, počínaje buňkou, do které zadáte vzorec.

    Syntaxe funkce FILTER je následující:

    FILTER(array, include, [if_empty])

    Kde:

    • Pole (povinné) - rozsah nebo pole hodnot, které chcete filtrovat.
    • Zahrnout (povinné) - kritérium zadané jako pole logických hodnot (hodnoty TRUE a FALSE).

      Jeho výška (pokud jsou data ve sloupcích) nebo šířka (pokud jsou data v řádcích) se musí rovnat výšce nebo šířce řádku. pole argument.

    • If_empty (nepovinné) - hodnota, která se vrátí, pokud žádná položka nesplňuje kritéria.

    Funkce FILTR je k dispozici pouze v aplikaci Excel pro Microsoft 365 a Excel 2021. V aplikacích Excel 2019, Excel 2016 a starších verzích není podporována.

    Základní vzorec Excel FILTER

    Pro začátek probereme několik velmi jednoduchých případů, abychom lépe pochopili, jak funguje vzorec aplikace Excel pro filtrování dat.

    Předpokládejme, že z níže uvedeného souboru dat chcete získat záznamy s určitou hodnotou v poli Skupina , sloupec, řekněme skupina C. Abychom to mohli provést, zadáme výraz B2:B13="C" do pole zahrnout argument, který vytvoří požadované pole booleovských hodnot, přičemž TRUE odpovídá hodnotám "C".

    =FILTER(A2:C13, B2:B13="C", "Žádné výsledky")

    V praxi je vhodnější zadávat kritéria do samostatné buňky, např. F1, a použít odkaz na buňku místo zadávání hodnoty přímo do vzorce:

    =FILTER(A2:C13, B2:B13=F1, "Žádné výsledky")

    Na rozdíl od funkce Filtr aplikace Excel neprovádí tato funkce žádné změny v původních datech. Vyjme filtrované záznamy do tzv. rozlivového rozsahu (E4:G7 na obrázku níže), který začíná v buňce, do níž je zadán vzorec:

    Pokud zadaným kritériím neodpovídají žádné záznamy, vzorec vrátí hodnotu, kterou jste zadali do pole if_empty argument, v tomto příkladu "Žádné výsledky":

    Pokud byste raději vrátit nic v tomto případě zadejte jako poslední argument prázdný řetězec (""):

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

    V případě, že jsou vaše data uspořádána horizontálně zleva doprava, jak je znázorněno na obrázku níže, bude funkce FILTER fungovat také. Jen se ujistěte, že jste definovali vhodné rozsahy pro funkce. pole a zahrnout argumenty, aby zdrojové pole a pole logických prvků měly stejnou šířku:

    =FILTER(B2:M4, B3:M3= B7, "Žádné výsledky")

    Funkce Excel FILTER - poznámky k použití

    Chcete-li v aplikaci Excel efektivně filtrovat pomocí vzorců, věnujte pozornost několika důležitým bodům:

    • Funkce FILTR automaticky rozsype výsledky v pracovním listu vertikálně nebo horizontálně, podle toho, jak jsou uspořádána původní data. Proto se ujistěte, že máte vždy dostatek prázdných buněk dole a vpravo, jinak se zobrazí chyba #SPILL.
    • Výsledky funkce Excel FILTER jsou dynamické, což znamená, že se automaticky aktualizují při změně hodnot v původním souboru dat. pole se při přidávání nových záznamů do zdrojových dat neaktualizuje. pole automaticky měnit velikost, pak jej převést na tabulku Excelu a vytvořit vzorce se strukturovanými odkazy nebo vytvořit dynamický pojmenovaný rozsah.

    Jak filtrovat v aplikaci Excel - příklady vzorců

    Nyní, když už víte, jak funguje základní vzorec filtru aplikace Excel, je čas seznámit se s tím, jak jej lze rozšířit pro řešení složitějších úloh.

    Filtrování pomocí více kritérií (logika AND)

    Chcete-li filtrovat data pomocí více kritérií, zadejte dva nebo více logických výrazů pro položku zahrnout argument:

    FILTER(pole, ( range1 = kritéria1 ) * ( rozsah2 = kritéria2 ), "Žádné výsledky")

    Operace násobení zpracovává pole se souřadnicemi Logika AND , čímž se zajistí, že budou vybrány pouze záznamy, které splňují všechna kritéria Technicky to funguje takto:

    Výsledkem každého logického výrazu je pole logických hodnot, kde TRUE odpovídá 1 a FALSE 0. Poté se prvky všech polí na stejných pozicích vynásobí. Protože vynásobení nulou dává vždy nulu, dostanou se do výsledného pole pouze ty prvky, pro které jsou všechna kritéria TRUE, a proto se vyjmou pouze tyto prvky.

    Níže uvedené příklady ukazují tento obecný vzorec v praxi.

    Příklad 1. Filtrování více sloupců v aplikaci Excel

    Rozšíříme-li náš základní vzorec Excel FILTER o něco dále, budeme filtrovat data podle dvou sloupců: Skupina (sloupec B) a Výhry (sloupec C).

    Za tímto účelem nastavíme následující kritéria: do pole F2 zadáme název cílové skupiny ( kritéria1 ) a minimální požadovaný počet vítězství v F3 ( kritéria2 ).

    Vzhledem k tomu, že naše zdrojová data jsou v A2:C13 ( pole ), skupiny jsou v B2:B13 ( range1 ) a vítězství v C2:C13 ( rozsah2 ), vzorec má tento tvar:

    =FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "Žádné výsledky")

    Výsledkem je seznam hráčů ve skupině A, kteří dosáhli 2 a více vítězství:

    Příklad 2. Filtrování dat mezi daty

    Nejprve je třeba poznamenat, že v Excelu není možné vytvořit obecný vzorec pro filtrování podle data. V různých situacích bude třeba sestavit kritéria odlišně, podle toho, zda chcete filtrovat podle konkrétního data, měsíce nebo roku. Účelem tohoto příkladu je ukázat obecný přístup.

    K našim vzorovým datům přidáme ještě jeden sloupec obsahující data poslední výhry (sloupec D). A nyní vybereme výhry, ke kterým došlo v určitém období, například mezi 17. a 31. květnem.

    Všimněte si, že v tomto případě se obě kritéria vztahují na stejný rozsah:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Žádné výsledky")

    Kde G2 a G3 jsou data, mezi kterými se má filtrovat.

    Filtrování pomocí více kritérií (logika OR)

    Chcete-li získat data na základě vícenásobné podmínky OR, použijete také logické výrazy, jak je uvedeno v předchozích příkladech, ale místo násobení je sečtete. Po sečtení logických polí vrácených výrazy bude mít výsledné pole hodnotu 0 pro položky, které nesplňují žádné kritérium (tj. všechna kritéria jsou FALSE), a takové položky budou odfiltrovány.bude vybráno alespoň jedno kritérium, které je TRUE.

    Zde je obecný vzorec pro filtrování sloupců pomocí logiky OR:

    FILTER(pole, ( range1 = kritéria1 ) + ( rozsah2 = kritéria2 ), "Žádné výsledky")

    Jako příklad si vybereme seznam hráčů, kteří mají to či ono počet vítězství.

    Za předpokladu, že zdrojová data jsou v A2:C13, výhry jsou v C2:C13 a čísla výher, která nás zajímají, jsou v F2 a F3, vzorec by vypadal takto:

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Žádné výsledky")

    Výsledkem je, že víte, kteří hráči vyhráli všechny hry (4) a kteří nevyhráli žádnou (0):

    Filtrování na základě více kritérií AND i OR

    V případě, že potřebujete použít oba typy kritérií, pamatujte na jednoduché pravidlo: spojte kritéria AND hvězdičkou (*) a kritéria OR znaménkem plus (+).

    Chcete-li například vrátit seznam hráčů, kteří mají daný počet výher (F2) A patří do skupiny uvedené v E2 NEBO E3, sestavte následující řetězec logických výrazů:

    =FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "Žádné výsledky")

    A dostanete následující výsledek:

    Jak filtrovat duplicity v aplikaci Excel

    Při práci s rozsáhlými pracovními listy nebo při kombinování dat z různých zdrojů často hrozí, že se do nich vloudí duplicity.

    Pokud chcete odfiltrovat duplikáty a vyjměte jedinečné položky a poté použijte funkci UNIQUE, jak je vysvětleno ve výše uvedeném odkazovaném tutoriálu.

    Pokud je vaším cílem filtrovat duplikáty , tj. vyjmout položky, které se vyskytují více než jednou, pak použijte funkci FILTER spolu s funkcí COUNTIFS.

    Cílem je získat počty výskytů pro všechny záznamy a vyjmout ty, které jsou větší než 1. Abyste získali počty, zadejte pro každý záznam stejný rozsah. criteria_range / kritéria dvojice COUNTIFS, jako je tento:

    FILTR( pole , COUNTIFS( sloupec1 , sloupec1, sloupec2 , sloupec2 )>1, "Žádné výsledky")

    Chcete-li například vyfiltrovat duplicitní řádky z dat v A2:C20 na základě hodnot ve všech 3 sloupcích, použijte tento vzorec:

    =FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "Žádné výsledky")

    Tip. Chcete-li filtrovat duplikáty na základě hodnot v poli klíčové sloupce , zahrňte do funkce COUNTIFS pouze tyto konkrétní sloupce.

    Jak odfiltrovat prázdná místa v aplikaci Excel

    Vzorec pro vyfiltrování prázdných buněk je vlastně variací vzorce Excel FILTER s více kritérii AND. V tomto případě kontrolujeme, zda jsou ve všech (nebo v určitých) sloupcích nějaká data, a vyloučíme řádky, kde je alespoň jedna buňka prázdná. Pro identifikaci neprázdných buněk použijeme operátor "not equal to" () spolu s prázdným řetězcem ("") takto:

    FILTER(pole, ( sloupec1 "") * ( sloupec2 =""), "Žádné výsledky")

    Při zdrojových datech v A2:C12 se pro odfiltrování řádků obsahujících jednu nebo více prázdných buněk zadá do E3 následující vzorec:

    Filtrování buněk obsahujících určitý text

    Chcete-li vyjmout buňky, které obsahují určitý text, můžete použít funkci FILTR spolu s klasickým vzorcem Pokud buňka obsahuje:

    FILTER(pole, ISNUMBER(HLEDAT(" text ", rozsah )), "Žádné výsledky")

    Funguje to takto:

    • Funkce HLEDAT vyhledá zadaný textový řetězec v daném rozsahu a vrátí buď číslo (pozici prvního znaku), nebo chybu #VALUE! (text nebyl nalezen).
    • Funkce ISNUMBER převede všechna čísla na TRUE a chyby na FALSE a výsledné logické pole předá funkci zahrnout argumentu funkce FILTER.

    Pro tento příklad jsme přidali Příjmení hráčů v B2:B13, zadejte část jména, kterou chceme najít v G2, a poté použijte následující vzorec pro filtrování dat:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Žádné výsledky")

    Výsledkem je vzorec, který vyhledá dvě příjmení obsahující slovo "han":

    Filtrování a výpočet (součet, průměr, min, max atd.)

    Zajímavou vlastností funkce FILTER aplikace Excel je, že dokáže nejen extrahovat hodnoty s podmínkami, ale také filtrovaná data shrnout. K tomu slouží kombinace funkce FILTER s agregačními funkcemi, jako jsou SUM, AVERAGE, COUNT, MAX nebo MIN.

    Chcete-li například agregovat data pro určitou skupinu v F1, použijte následující vzorce:

    Celkový počet vítězství:

    =SOUČET(FILTR(C2:C13, B2:B13=F1, 0))

    Průměrné vítězství:

    =PRŮMĚR(FILTER(C2:C13, B2:B13=F1, 0))

    Maximální počet výher:

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

    Minimální počet výher:

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

    Věnujte prosím pozornost tomu, že ve všech vzorcích používáme nulu pro hodnotu if_empty argument, takže vzorce by v případě nenalezení žádné hodnoty splňující kritéria vracely 0. Zadání jakéhokoli textu, například "Žádné výsledky", by vedlo k chybě #VALUE, což je samozřejmě to poslední, co chcete :)

    Vzorec FILTER rozlišující malá a velká písmena

    Standardní vzorec FILTER aplikace Excel nerozlišuje velká a malá písmena, což znamená, že nerozlišuje malá a velká písmena. Chcete-li rozlišit velikost písmen v textu, vnořte funkci EXACT do vzorce FILTER. zahrnout argument. Tím donutíte FILTER, aby provedl logický test s ohledem na velikost písmen:

    FILTER(pole, EXACT( rozsah , kritéria ), "Žádné výsledky")

    Předpokládejme, že máte obě skupiny A a a a přejete si vyjmout záznamy, jejichž skupinou je malé písmeno "a". Chcete-li to provést, použijte následující vzorec, kde A2:C13 jsou zdrojová data a B2:B13 jsou skupiny, které se mají filtrovat:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "Žádné výsledky")

    Jako obvykle můžete cílovou skupinu zadat do předdefinované buňky, například F1, a použít odkaz na tuto buňku místo pevně zadaného textu:

    =FILTER(A2:C13, EXACT(B2:B13, F1), "Žádné výsledky")

    Jak filtrovat data a vrátit pouze určité sloupce

    Uživatelé aplikace Excel většinou chtějí filtrovat všechny sloupce pomocí jediného vzorce. Pokud však vaše zdrojová tabulka obsahuje desítky nebo dokonce stovky sloupců, určitě budete chtít omezit výsledky na několik nejdůležitějších.

    Příklad 1. Filtrování některých sousedních sloupců

    V případě, že chcete, aby se ve výsledku FILTRU objevily některé sousední sloupce, zahrňte do filtru pouze tyto sloupce. pole protože právě tento argument určuje, které sloupce se mají vrátit.

    V základním příkladu vzorce FILTER předpokládejme, že chcete vrátit první 2 sloupce ( Název a Skupina ). Takže zadáváte A2:B13 pro pole argument:

    =FILTER(A2:B13, B2:B13=F1, "Žádné výsledky")

    Výsledkem je seznam účastníků cílové skupiny definované v F1:

    Příklad 2. Filtrování nesousedících sloupců

    Chcete-li, aby funkce FILTER vracela nesouvislé sloupce, použijte tento chytrý trik:

    1. Vytvořte vzorec FILTER s požadovanou podmínkou (podmínkami) s použitím celé tabulky pro pole .
    2. Vložte výše uvedený vzorec do jiné funkce FILTER. Chcete-li nakonfigurovat funkci "wrapper", použijte konstantu pole hodnot TRUE a FALSE nebo 1 a 0 pro funkci zahrnout kde TRUE (1) označuje sloupce, které mají být zachovány, a FALSE (0) označuje sloupce, které mají být vyloučeny.

    Chcete-li například vrátit pouze Jména (1. sloupec) a Výhry (3. sloupec), používáme {1,0,1} nebo {TRUE,FALSE,TRUE}. zahrnout argument vnější funkce FILTER:

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

    Nebo

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

    Jak omezit počet řádků vrácených funkcí FILTER

    Pokud vzorec FILTER najde poměrně hodně výsledků, ale váš pracovní list má omezený prostor a vy nemůžete odstranit data níže, můžete omezit počet řádků, které funkce FILTER vrátí.

    Podívejme se, jak to funguje na příkladu jednoduchého vzorce, který vybírá hráče z cílové skupiny v F1:

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

    Výše uvedený vzorec vypíše všechny nalezené záznamy, v našem případě tedy 4 řádky. Předpokládejme však, že máte místo pouze pro dva. Chcete-li vypsat pouze první dva nalezené řádky, musíte provést toto:

    • Vzorec FILTER vložte do pole argumentu funkce INDEX.
    • Pro row_num argumentu INDEX, použijte svislou konstantu pole jako {1;2}. Určuje, kolik řádků se má vrátit (v našem případě 2).
    • Pro column_num použijte horizontální konstantu pole, například {1,2,3}. Určuje, které sloupce se mají vrátit (v tomto příkladu první 3 sloupce).
    • Chcete-li se postarat o případné chyby, když nejsou nalezena žádná data odpovídající vašim kritériím, můžete vzorec obalit funkcí IFERROR.

    Úplný vzorec má tento tvar:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "Žádný výsledek")

    Při práci s rozsáhlými tabulkami může být ruční zápis konstant pole poměrně těžkopádný. Žádný problém, funkce SEQUENCE může pořadová čísla generovat automaticky:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), SEQUENCE(2), SEQUENCE(1, COLUMNS(A2:C13))), "Žádný výsledek")

    První SEQUENCE vytvoří vertikální pole obsahující tolik pořadových čísel, kolik je uvedeno v prvním (a jediném) argumentu. Druhý SEQUENCE použije funkci COLUMNS pro spočítání počtu sloupců v datovém souboru a vytvoří ekvivalentní horizontální pole.

    Tip. Chcete-li vrátit data z konkrétní sloupce , nikoliv všechny sloupce, v konstantě horizontálního pole, kterou používáte pro. column_num argumentu INDEX, zahrňte pouze tato konkrétní čísla. Chcete-li například získat data z 1. a 3. sloupce, použijte {1,3}.

    Nefunkčnost funkce FILTR v aplikaci Excel

    V situaci, kdy vzorec FILTER aplikace Excel vede k chybě, se s největší pravděpodobností jedná o jednu z následujících příčin:

    #CALC! chyba

    Nastane, pokud nepovinný if_empty je argument vynechán a nejsou nalezeny žádné výsledky splňující kritéria. Důvodem je, že Excel v současné době nepodporuje prázdná pole. Chcete-li těmto chybám předejít, nezapomeňte vždy definovat pole if_empty hodnotu ve vzorcích.

    Chyba #VALUE

    Nastane, když pole a zahrnout mají neslučitelné rozměry.

    #N/A, #VALUE atd.

    K různým chybám může dojít, pokud je některá hodnota v položce zahrnout argument je chyba nebo jej nelze převést na logickou hodnotu.

    #NAME error

    Vyskytne se při pokusu o použití funkce FILTER ve starší verzi aplikace Excel. Nezapomeňte, že se jedná o novou funkci, která je k dispozici pouze v aplikacích Office 365 a Excel 2021.

    V novém Excelu se při náhodném chybném zadání názvu funkce objeví chyba #NAME.

    Chyba #SPILL

    Nejčastěji k této chybě dochází, pokud jedna nebo více buněk v rozsahu rozsypání není zcela prázdná. Chcete-li ji opravit, stačí vymazat nebo odstranit neprázdné buňky. Chcete-li prozkoumat a vyřešit jiné případy, přečtěte si článek Chyba #SPILL! v aplikaci Excel: co znamená a jak ji opravit.

    #REF! chyba

    Nastane, když je vzorec FILTER použit mezi různými sešity a zdrojový sešit je uzavřen.

    To je návod, jak dynamicky vyplňovat data v Excelu. Děkuji vám za přečtení a doufám, že se příští týden uvidíme na našem blogu!

    Stáhnout cvičebnici

    Filtrování v aplikaci Excel pomocí vzorců (.xlsx soubor)

    Michael Brown je oddaný technologický nadšenec s vášní pro zjednodušování složitých procesů pomocí softwarových nástrojů. S více než desetiletými zkušenostmi v technologickém průmyslu zdokonalil své dovednosti v aplikacích Microsoft Excel a Outlook a také v Tabulkách a Dokumentech Google. Michaelův blog je věnován sdílení jeho znalostí a odborných znalostí s ostatními a poskytuje snadno pochopitelné tipy a návody pro zlepšení produktivity a efektivity. Ať už jste zkušený profesionál nebo začátečník, Michaelův blog nabízí cenné postřehy a praktické rady, jak tyto základní softwarové nástroje co nejlépe využít.