Funkcia Excel FILTER - dynamické filtrovanie pomocou vzorcov

  • Zdieľajte To
Michael Brown

V tejto krátkej lekcii sa naučíte, ako v programe Excel dynamicky filtrovať pomocou vzorcov. Príklady na filtrovanie duplikátov, buniek obsahujúcich určitý text, s viacerými kritériami a ďalšie.

Ako zvyčajne filtrujete v programe Excel? Väčšinou pomocou automatického filtra a v zložitejších scenároch pomocou rozšíreného filtra. Tieto metódy sú rýchle a výkonné, majú však jednu podstatnú nevýhodu - pri zmene údajov sa automaticky neaktualizujú, čo znamená, že by ste museli vyčistiť a filtrovať znova. Zavedenie funkcie FILTER v programe Excel 365 sa stáva dlho očakávanou alternatívou kkonvenčné funkcie. Na rozdiel od nich sa vzorce Excelu automaticky prepočítavajú pri každej zmene pracovného hárka, takže filter stačí nastaviť len raz!

    Funkcia Excel FILTER

    Funkcia FILTER v programe Excel sa používa na filtrovanie rozsahu údajov na základe zadaných kritérií.

    Funkcia patrí do kategórie funkcií Dynamické polia. Výsledkom je pole hodnôt, ktoré sa automaticky rozleje do rozsahu buniek, počnúc bunkou, do ktorej ste zadali vzorec.

    Syntax funkcie FILTER je nasledujúca:

    FILTER(array, include, [if_empty])

    Kde:

    • Pole (povinné) - rozsah alebo pole hodnôt, ktoré chcete filtrovať.
    • Zahrnúť (povinné) - kritériá zadané ako pole logických hodnôt (hodnoty TRUE a FALSE).

      Jeho výška (ak sú údaje v stĺpcoch) alebo šírka (ak sú údaje v riadkoch) sa musí rovnať výške pole argument.

    • If_empty (nepovinné) - hodnota, ktorá sa vráti, ak kritériá nespĺňajú žiadne položky.

    Funkcia FILTER je k dispozícii len v aplikácii Excel pre Microsoft 365 a Excel 2021. V aplikáciách Excel 2019, Excel 2016 a starších verziách nie je podporovaná.

    Základný vzorec programu Excel FILTER

    Na začiatok preberieme niekoľko veľmi jednoduchých prípadov, aby sme lepšie pochopili, ako funguje vzorec programu Excel na filtrovanie údajov.

    Predpokladajme, že z nižšie uvedeného súboru údajov chcete získať záznamy s konkrétnou hodnotou v poli Skupina , stĺpec, povedzme skupina C. Aby sme to mohli urobiť, dodáme výraz B2:B13="C" do zahŕňajú . argument, ktorý vytvorí požadované pole logických hodnôt, pričom TRUE zodpovedá hodnotám "C".

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

    V praxi je vhodnejšie zadať kritérium do samostatnej bunky, napr. F1, a použiť odkaz na bunku namiesto toho, aby ste hodnotu zakódovali priamo do vzorca:

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

    Na rozdiel od funkcie Filter programu Excel táto funkcia nevykonáva žiadne zmeny v pôvodných údajoch. Vyberie filtrované záznamy do takzvaného rozsypaného rozsahu (E4:G7 na obrázku nižšie), ktorý začína v bunke, do ktorej je zadaný vzorec:

    Ak zadaným kritériám nevyhovuje žiadny záznam, vzorec vráti hodnotu, ktorú ste vložili do if_empty argument, v tomto príklade "Žiadne výsledky":

    Ak by ste radšej vrátiť nič v tomto prípade zadajte ako posledný argument prázdny reťazec (""):

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

    V prípade, že sú vaše údaje usporiadané horizontálne zľava doprava, ako je znázornené na obrázku nižšie, bude funkcia FILTER fungovať tiež. Len sa uistite, že ste definovali vhodné rozsahy pre pole a zahŕňajú . argumenty, aby zdrojové pole a pole Boolean mali rovnakú šírku:

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

    Funkcia Excel FILTER - poznámky k použitiu

    Ak chcete efektívne filtrovať v programe Excel pomocou vzorcov, je potrebné venovať pozornosť niekoľkým dôležitým bodom:

    • Funkcia FILTER automaticky rozlieva výsledky v pracovnom hárku vertikálne alebo horizontálne, v závislosti od toho, ako sú usporiadané vaše pôvodné údaje. Preto sa uistite, že máte vždy dostatok prázdnych buniek dole a napravo, inak sa zobrazí chyba #SPILL.
    • Výsledky funkcie Excel FILTER sú dynamické, čo znamená, že sa automaticky aktualizujú, keď sa zmenia hodnoty v pôvodnom súbore údajov. pole sa pri pridávaní nových položiek do zdrojových údajov neaktualizuje. pole na automatickú zmenu veľkosti, potom ho preveďte na tabuľku Excelu a vytvorte vzorce so štruktúrovanými odkazmi alebo vytvorte dynamický pomenovaný rozsah.

    Ako filtrovať v programe Excel - príklady vzorcov

    Teraz, keď už viete, ako funguje základný vzorec filtra Excelu, je čas získať informácie o tom, ako by sa dal rozšíriť na riešenie zložitejších úloh.

    Filtrovanie pomocou viacerých kritérií (logika AND)

    Ak chcete filtrovať údaje pomocou viacerých kritérií, zadajte dva alebo viac logických výrazov pre zahŕňajú . argument:

    FILTER(pole, ( rozsah1 = kritériá1 ) * ( rozsah2 = kritériá2 ), "Žiadne výsledky")

    Operácia násobenia spracováva polia s Logika AND , čím sa zabezpečí, že sa budú používať len záznamy, ktoré spĺňajú všetky kritériá Technicky to funguje takto:

    Výsledkom každého logického výrazu je pole logických hodnôt, kde TRUE sa rovná 1 a FALSE 0. Potom sa prvky všetkých polí na rovnakých pozíciách vynásobia. Keďže vynásobením nulou sa vždy získa nula, do výsledného poľa sa dostanú len tie položky, pre ktoré sú všetky kritériá TRUE, a následne sa vyberú len tieto položky.

    Nižšie uvedené príklady ukazujú tento všeobecný vzorec v praxi.

    Príklad 1. Filtrovanie viacerých stĺpcov v programe Excel

    Ak rozšírime náš základný vzorec FILTER programu Excel o niečo ďalej, filtrujme údaje podľa dvoch stĺpcov: Skupina (stĺpec B) a Vyhráva (stĺpec C).

    Na tento účel nastavíme nasledujúce kritériá: do klávesu F2 zadáme názov cieľovej skupiny ( kritériá1 ) a minimálny požadovaný počet víťazstiev v F3 ( kritériá2 ).

    Vzhľadom na to, že naše zdrojové údaje sú v A2:C13 ( pole ), skupiny sú v B2:B13 ( rozsah1 ) a víťazstvá sú v C2:C13 ( rozsah2 ), vzorec má tento tvar:

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

    Výsledkom je zoznam hráčov v skupine A, ktorí dosiahli 2 alebo viac víťazstiev:

    Príklad 2. Filtrovanie údajov medzi dátumami

    Na úvod je potrebné poznamenať, že v programe Excel nie je možné vytvoriť všeobecný vzorec na filtrovanie podľa dátumu. V rôznych situáciách bude potrebné zostaviť kritériá odlišne, v závislosti od toho, či chcete filtrovať podľa konkrétneho dátumu, mesiaca alebo roka. Účelom tohto príkladu je demonštrovať všeobecný prístup.

    K našim vzorovým údajom pridáme ešte jeden stĺpec obsahujúci dátumy poslednej výhry (stĺpec D). A teraz vyberieme výhry, ktoré sa vyskytli v určitom období, napríklad medzi 17. a 31. májom.

    Všimnite si, že v tomto prípade sa obidve kritériá vzťahujú na rovnaký rozsah:

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

    Kde G2 a G3 sú dátumy, medzi ktorými sa má filtrovať.

    Filtrovanie pomocou viacerých kritérií (logika OR)

    Ak chcete získať údaje na základe viacnásobnej podmienky OR, tiež použijete logické výrazy, ako je uvedené v predchádzajúcich príkladoch, ale namiesto násobenia ich sčítate. Keď sa logické polia vrátené výrazmi sčítajú, výsledné pole bude mať hodnotu 0 pre položky, ktoré nespĺňajú žiadne kritérium (t. j. všetky kritériá sú FALSE), a takéto položky budú odfiltrované.aspoň jedno kritérium je TRUE, bude vyňaté.

    Tu je všeobecný vzorec na filtrovanie stĺpcov pomocou logiky OR:

    FILTER(pole, ( rozsah1 = kritériá1 ) + ( rozsah2 = kritériá2 ), "Žiadne výsledky")

    Ako príklad uveďme zoznam hráčov, ktorí majú to alebo ono počet víťazstiev.

    Za predpokladu, že zdrojové údaje sú v A2:C13, výhry sú v C2:C13 a čísla výhier, ktoré nás zaujímajú, sú v F2 a F3, vzorec by mal nasledovný postup:

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

    Výsledkom je, že viete, ktorí hráči vyhrali všetky hry (4) a ktorí nevyhrali žiadnu (0):

    Filtrovanie na základe viacerých kritérií AND aj OR

    V situácii, keď potrebujete použiť oba typy kritérií, nezabudnite na toto jednoduché pravidlo: spojte kritériá AND s hviezdičkou (*) a kritériá OR so znamienkom plus (+).

    Ak chcete napríklad vrátiť zoznam hráčov, ktorí majú daný počet víťazstiev (F2) A patria do skupiny uvedenej v E2 ALEBO E3, vytvorte nasledujúci reťazec logických výrazov:

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

    A dostanete nasledujúci výsledok:

    Ako filtrovať duplikáty v programe Excel

    Pri práci s obrovskými pracovnými hárkami alebo pri kombinovaní údajov z rôznych zdrojov často existuje možnosť, že sa do nich vkradnú duplikáty.

    Ak chcete odfiltrovať duplikáty a extrahujte jedinečné položky, potom použite funkciu UNIQUE, ako je vysvetlené vo vyššie uvedenom návode.

    Ak je vaším cieľom filtrovanie duplikátov , t. j. extrahovať záznamy, ktoré sa vyskytujú viac ako raz, potom použite funkciu FILTER spolu s funkciou COUNTIFS.

    Cieľom je získať počty výskytov pre všetky záznamy a extrahovať tie, ktoré sú väčšie ako 1. criteria_range / kritériá pár COUNTIFS ako je tento:

    FILTER( pole , COUNTIFS( stĺpec1 , stĺpec1, stĺpec2 , stĺpec2 )>1, "Žiadne výsledky")

    Ak chcete napríklad vyfiltrovať duplicitné riadky z údajov v A2:C20 na základe hodnôt vo všetkých 3 stĺpcoch, použite tento vzorec:

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

    Tip. Ak chcete filtrovať duplikáty na základe hodnôt v kľúčové stĺpce , zahrňte do funkcie COUNTIFS len tieto konkrétne stĺpce.

    Ako odfiltrovať prázdne miesta v programe Excel

    Vzorec na odfiltrovanie prázdnych buniek je v skutočnosti variáciou vzorca Excel FILTER s viacerými kritériami AND. V tomto prípade kontrolujeme, či sú vo všetkých (alebo konkrétnych) stĺpcoch nejaké údaje, a vylúčime riadky, v ktorých je aspoň jedna bunka prázdna. Na identifikáciu neprázdnych buniek použijete operátor "not equal to" () spolu s prázdnym reťazcom ("") takto:

    FILTER(pole, ( stĺpec1 "") * ( stĺpec2 =""), "Žiadne výsledky")

    Pri zdrojových údajoch v A2:C12 sa na odfiltrovanie riadkov obsahujúcich jednu alebo viac prázdnych buniek zadá do E3 nasledujúci vzorec:

    Filtrovanie buniek obsahujúcich konkrétny text

    Ak chcete vybrať bunky, ktoré obsahujú určitý text, môžete použiť funkciu FILTER spolu s klasickým vzorcom If cell contains:

    FILTER(array, ISNUMBER(SEARCH(" text ", rozsah )), "Žiadne výsledky")

    Funguje to takto:

    • Funkcia SEARCH hľadá zadaný textový reťazec v danom rozsahu a vráti buď číslo (pozíciu prvého znaku), alebo chybu #VALUE! (text nebol nájdený).
    • Funkcia ISNUMBER prevedie všetky čísla na TRUE a chyby na FALSE a výsledné logické pole odovzdá funkcii zahŕňajú . argument funkcie FILTER.

    V tomto príklade sme pridali Priezviská hráčov v B2:B13, zadajte časť mena, ktorú chceme nájsť v G2, a potom použite nasledujúci vzorec na filtrovanie údajov:

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

    Výsledkom je vzorec, ktorý vyhľadá dve priezviská obsahujúce slovo "han":

    Filtrovanie a výpočet (suma, priemer, min, max atď.)

    Výbornou vlastnosťou funkcie FILTER v programe Excel je, že dokáže nielen extrahovať hodnoty s podmienkami, ale aj sumarizovať filtrované údaje. Na tento účel skombinujte FILTER s agregačnými funkciami, ako sú SUM, AVERAGE, COUNT, MAX alebo MIN.

    Ak chcete napríklad agregovať údaje pre konkrétnu skupinu v F1, použite nasledujúce vzorce:

    Celkový počet víťazstiev:

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

    Priemerné víťazstvá:

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

    Maximálny počet víťazstiev:

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

    Minimálny počet víťazstiev:

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

    Upozorňujeme, že vo všetkých vzorcoch používame nulu pre if_empty argument, takže vzorce by vrátili 0, ak by sa nenašli žiadne hodnoty spĺňajúce kritériá. Zadanie akéhokoľvek textu, napríklad "Žiadne výsledky", by viedlo k chybe #VALUE, čo je samozrejme to posledné, čo chcete :)

    Vzorec FILTER citlivý na veľkosť písmen

    Štandardný vzorec programu Excel FILTER nerozlišuje veľké a malé písmená, čo znamená, že nerozlišuje medzi malými a veľkými písmenami. Ak chcete rozlišovať veľké a malé písmená textu, vložte funkciu EXACT do zahŕňajú . Toto prinúti FILTER vykonať logický test s ohľadom na veľkosť písmen:

    FILTER(pole, EXACT( rozsah , kritériá ), "Žiadne výsledky")

    Predpokladajme, že máte obe skupiny A a a a chcete vyselektovať záznamy, v ktorých je skupinou malé písmeno "a". Ak to chcete urobiť, použite nasledujúci vzorec, kde A2:C13 sú zdrojové údaje a B2:B13 sú skupiny na filtrovanie:

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

    Ako zvyčajne, cieľovú skupinu môžete zadať do preddefinovanej bunky, napríklad F1, a namiesto pevne zadaného textu použiť odkaz na túto bunku:

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

    Ako FILTROVAŤ údaje a vrátiť len konkrétne stĺpce

    Používatelia aplikácie Excel väčšinou chcú filtrovať všetky stĺpce pomocou jedného vzorca. Ak však vaša zdrojová tabuľka obsahuje desiatky alebo dokonca stovky stĺpcov, určite budete chcieť obmedziť výsledky na niekoľko najdôležitejších.

    Príklad 1. Filtrovanie niektorých susedných stĺpcov

    V situácii, keď chcete, aby sa vo výsledku FILTRA objavili niektoré susedné stĺpce, zahrňte do výsledku FILTRA len tieto stĺpce. pole pretože práve tento argument určuje, ktoré stĺpce sa majú vrátiť.

    V príklade základného vzorca FILTER predpokladáme, že chcete vrátiť prvé 2 stĺpce ( Názov a Skupina ). Teda, zadávate A2:B13 pre pole argument:

    =FILTER(A2:B13, B2:B13=F1, "Žiadne výsledky")

    Výsledkom je zoznam účastníkov cieľovej skupiny definovanej v F1:

    Príklad 2. Filtrovanie nesusedných stĺpcov

    Ak chcete, aby funkcia FILTER vrátila nesúvislé stĺpce, použite tento šikovný trik:

    1. Vytvorte vzorec FILTER s požadovanou podmienkou (podmienkami) s použitím celej tabuľky pre pole .
    2. Umiestnite vyššie uvedený vzorec do inej funkcie FILTER. Ak chcete nakonfigurovať funkciu "wrapper", použite pole konštánt s hodnotami TRUE a FALSE alebo 1 a 0 pre zahŕňajú . argument, kde TRUE (1) označuje stĺpce, ktoré sa majú zachovať, a FALSE (0) označuje stĺpce, ktoré sa majú vylúčiť.

    Ak chcete napríklad vrátiť iba Názvy (1. stĺpec) a Vyhráva (3. stĺpec), používame {1,0,1} alebo {TRUE,FALSE,TRUE} pre zahŕňajú . argument vonkajšej funkcie FILTER:

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

    Alebo

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

    Ako obmedziť počet riadkov vrátených funkciou FILTER

    Ak vzorec FILTER nájde pomerne veľa výsledkov, ale váš pracovný hárok má obmedzený priestor a nemôžete odstrániť údaje pod ním, môžete obmedziť počet riadkov, ktoré funkcia FILTER vráti.

    Pozrime sa, ako to funguje na príklade jednoduchého vzorca, ktorý vytiahne hráčov z cieľovej skupiny v F1:

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

    Vyššie uvedený vzorec vypíše všetky nájdené záznamy, v našom prípade 4 riadky. Predpokladajme však, že máte miesto len pre dva. Ak chcete vypísať len prvé 2 nájdené riadky, musíte urobiť toto:

    • Zapojte vzorec FILTER do pole argument funkcie INDEX.
    • Pre číslo_riadku argumentu INDEX, použite vertikálnu konštantu poľa, napríklad {1;2}. Určuje, koľko riadkov sa má vrátiť (v našom prípade 2).
    • Pre column_num argument, použite konštantu horizontálneho poľa, napríklad {1,2,3}. Určuje, ktoré stĺpce sa majú vrátiť (v tomto príklade prvé 3 stĺpce).
    • Ak sa chcete postarať o prípadné chyby, keď sa nenájdu žiadne údaje zodpovedajúce vašim kritériám, môžete svoj vzorec zabaliť do funkcie IFERROR.

    Úplný vzorec má tento tvar:

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

    Pri práci s veľkými tabuľkami môže byť ručné zapisovanie konštánt poľa dosť ťažkopádne. Žiadny problém, funkcia SEQUENCE dokáže generovať sekvenčné čísla automaticky za vás:

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

    Prvá funkcia SEQUENCE vytvára vertikálne pole obsahujúce toľko sekvenčných čísel, koľko je zadaných v prvom (a jedinom) argumente. Druhá funkcia SEQUENCE používa funkciu COLUMNS na spočítanie počtu stĺpcov v súbore údajov a vytvára ekvivalentné horizontálne pole.

    Tip. Ak chcete vrátiť údaje z špecifické stĺpce , nie všetky stĺpce, v konštante horizontálneho poľa, ktorú používate pre column_num argumentu INDEX, zahrňte len tieto konkrétne čísla. Napríklad na získanie údajov z 1. a 3. stĺpca použite {1,3}.

    Nefunguje funkcia FILTER programu Excel

    V situácii, keď váš vzorec FILTER programu Excel vedie k chybe, bude to s najväčšou pravdepodobnosťou jedna z nasledujúcich príčin:

    #CALC! chyba

    Nastane, ak voliteľný if_empty Dôvodom je, že Excel v súčasnosti nepodporuje prázdne polia. Ak chcete predísť takýmto chybám, vždy definujte if_empty hodnotu vo vašich vzorcoch.

    Chyba #VALUE

    Nastane, keď pole a zahŕňajú . argument majú nezlučiteľné rozmery.

    #N/A, #VALUE atď.

    Rôzne chyby sa môžu vyskytnúť, ak niektorá hodnota v zahŕňajú . argument je chyba alebo ho nemožno previesť na logickú hodnotu.

    #NAME chyba

    Vyskytuje sa pri pokuse o použitie funkcie FILTER v staršej verzii programu Excel. Nezabudnite, že ide o novú funkciu, ktorá je k dispozícii len v balíku Office 365 a v programe Excel 2021.

    V novom programe Excel sa pri náhodnom nesprávnom uvedení názvu funkcie zobrazí chyba #NAME.

    Chyba #SPILL

    Najčastejšie sa táto chyba vyskytuje, ak jedna alebo viac buniek v rozsahu rozsypania nie sú úplne prázdne. Ak ju chcete opraviť, stačí vymazať alebo odstrániť neprázdne bunky. Ak chcete preskúmať a vyriešiť iné prípady, pozrite si časť Chyba #SPILL! v programe Excel: čo znamená a ako ju opraviť.

    #REF! chyba

    Nastane, keď sa vzorec FILTER používa medzi rôznymi zošitmi a zdrojový zošit je zatvorený.

    To je spôsob, ako dynamicky vypĺňať údaje v programe Excel. Ďakujem vám za prečítanie a dúfam, že sa uvidíme na našom blogu budúci týždeň!

    Stiahnite si cvičebnicu

    Filtrovanie v programe Excel pomocou vzorcov (.xlsx súbor)

    Michael Brown je nadšený technologický nadšenec s vášňou pre zjednodušovanie zložitých procesov pomocou softvérových nástrojov. S viac ako desaťročnými skúsenosťami v technologickom priemysle si zdokonalil svoje zručnosti v programoch Microsoft Excel a Outlook, ako aj Tabuľky Google a Dokumenty. Michaelov blog je venovaný zdieľaniu svojich vedomostí a odborných znalostí s ostatnými a poskytuje jednoduché tipy a návody na zlepšenie produktivity a efektivity. Či už ste skúsený profesionál alebo začiatočník, Michaelov blog ponúka cenné poznatky a praktické rady, ako z týchto základných softvérových nástrojov vyťažiť maximum.