Excel FILTER-funksje - dynamysk filterjen mei formules

  • Diel Dit
Michael Brown

Yn dizze flugge les sille jo leare hoe't jo dynamysk filterje yn Excel mei formules. Foarbylden om duplikaten te filterjen, sellen dy't bepaalde tekst befetsje, mei meardere kritearia, en mear.

Hoe filterje jo normaal yn Excel? Foar it grutste part, troch it brûken fan Auto Filter, en yn kompleksere senario's mei Avansearre filter. Troch rap en krêftich te wêzen, hawwe dizze metoaden ien wichtich nadeel - se wurde net automatysk bywurke as jo gegevens feroarje, wat betsjuttet dat jo opnij moatte skjinmeitsje en filterje. De ynfiering fan de FILTER-funksje yn Excel 365 wurdt in langverwachte alternatyf foar de konvinsjonele funksjes. Oars as harren, wurde Excel-formules automatysk opnij berekkene mei elke wiziging fan wurkblêd, dus jo moatte jo filter mar ien kear ynstelle!

    Excel FILTER-funksje

    De FILTER-funksje yn Excel wurdt brûkt om in berik fan gegevens te filterjen op basis fan de kritearia dy't jo oantsjutte.

    De funksje heart ta de kategory fan funksjes fan Dynamic Arrays. It resultaat is in array fan wearden dy't automatysk oergiet yn in berik fan sellen, begjinnend fan 'e sel wêr't jo in formule ynfiere.

    De syntaksis fan 'e FILTER-funksje is as folget:

    FILTER(array, befetsje , [if_empty])

    Wêr:

    • Array (ferplicht) - it berik of array fan wearden dy't jo filterje wolle.
    • Omfette (fereaske) - de kritearia levere as in Booleaanske array (TRUE en FALSE wearden).

      Itssels hûnderten kolommen, jo meie grif de resultaten beheine ta in pear meast wichtige.

      Foarbyld 1. Filter guon neistlizzende kolommen

      Yn situaasje as jo wolle dat guon oanbuorjende kolommen ferskine yn in FILTER-resultaat, befetsje allinich dy kolommen yn array , om't it dit argumint is dat bepaalt hokker kolommen weromkomme.

      Yn it foarbyld fan 'e basis FILTER-formule, as jo de earste 2 kolommen weromjaan wolle. ( Namme en Groep ). Dat, jo leverje A2:B13 foar it argumint array :

      =FILTER(A2:B13, B2:B13=F1, "No results")

      As resultaat krije wy in list mei dielnimmers fan 'e doelgroep definieare yn F1:

      Foarbyld 2. Filter net-oangrinzjende kolommen

      Om de FILTER-funksje net-oanlizzende kolommen werom te jaan, brûk dizze tûke trúk:

      1. Meitsje in FILTER-formule mei de winske betingst(sen) mei de hiele tabel foar array .
      2. Nest de boppesteande formule yn in oare FILTER-funksje. Om de "wrapper" funksje te konfigurearjen, brûk in arraykonstante fan TRUE en FALSE wearden of 1's en 0's foar it include argumint, wêrby't TRUE (1) de kolommen markearret dy't moatte wurde hâlden en FALSE (0) de kolommen om út te sluten.

      Om bygelyks allinich Nammen (1e kolom) en Wins (3e kolom) werom te jaan, brûke wy {1, 0,1} of {TRUE,FALSE,TRUE} foar it argumint include fan 'e bûtenste FILTER-funksje:

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

      Of

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

      Hoe beheine deoantal rigen weromjûn troch de FILTER-funksje

      As jo ​​FILTER-formule nochal in soad resultaten fynt, mar jo wurkblêd hat beheinde romte en jo kinne de gegevens hjirûnder net wiskje, dan kinne jo it oantal rigen beheine dy't de FILTER-funksje werombringt .

      Lit sjen hoe't it wurket op in foarbyld fan in ienfâldige formule dy't spilers lûkt út de doelgroep yn F1:

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

      De boppesteande formule jout alle records út dy't it fynt, 4 rigen yn ús gefal. Mar stel dat jo gewoan romte hawwe foar twa. Om allinich de earste 2 fûne rigen út te fieren, is dit wat jo dwaan moatte:

      • Plug de FILTER-formule yn it array -argumint fan de INDEX-funksje.
      • Foar it argumint row_num fan INDEX, brûk in fertikale arraykonstante lykas {1;2}. It bepaalt hoefolle rigen weromkomme (2 yn ús gefal).
      • Foar it argumint column_num , brûk in horizontale arraykonstante lykas {1,2,3}. It spesifisearret hokker kolommen weromkomme (de earste 3 kolommen yn dit foarbyld).
      • Om te soargjen foar mooglike flaters as der gjin gegevens fûn wurde dy't oerienkomme mei jo kritearia, kinne jo jo formule yn 'e IFERROR-funksje ferpakke.

    De folsleine formule nimt dizze foarm oan:

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

    As jo ​​wurkje mei grutte tabellen, kinne arraykonstanten mei de hân skriuwe frij omslachtig. Gjin probleem, de funksje SEQUENCE kin de opienfolgjende nûmers automatysk foar jo generearje:

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

    De earste SEQUENCE genereart in fertikale arraymei safolle opfolgjende nûmers as oantsjutte yn it earste (en ienige) argumint. De twadde SEQUENCE brûkt de funksje COLUMNS om it oantal kolommen yn 'e dataset te tellen en produsearret in lykweardige horizontale array.

    Tip. Om gegevens werom te jaan fan spesifike kolommen , befetsje net alle kolommen, yn 'e horizontale arraykonstante dy't jo brûke foar it argumint column_num fan INDEX, allinich dy spesifike nûmers. Om bygelyks gegevens út 'e 1e en 3e kolom te heljen, brûk {1,3}.

    Excel FILTER-funksje wurket net

    Yn situaasje as jo Excel FILTER-formule in flater resulteart, sil dat wierskynlik ien fan 'e folgjende wêze:

    #CALC! error

    Fankomt as it opsjonele if_empty -argumint is weilitten, en gjin resultaten dy't foldogge oan de kritearia binne fûn. De reden is dat Excel op it stuit gjin lege arrays stipet. Om sokke flaters foar te kommen, wês der wis fan dat jo altyd de if_empty -wearde yn jo formules definiearje.

    #VALUE-flater

    Fankomt as de array en include argumint hawwe ynkompatibele dimensjes.

    #N/A, #VALUE, ensfh.

    Der kinne ferskate flaters foarkomme as wat wearde yn it include argumint is in flater of kin net konvertearre wurde nei in Booleaanske wearde.

    #NAME-flater

    Fankomt by it besykjen fan FILTER yn in âldere ferzje fan Excel. Unthâld dat it in nije funksje is, dy't allinnich beskikber is yn Office 365 en Excel 2021.

    Innije Excel, in #NAME-flater komt foar as jo per ongeluk de namme fan de funksje ferkeard stavere.

    #SPILL-flater

    Meastentiids komt dizze flater foar as ien of mear sellen yn it spillbereik net folslein leech binne . Om it te reparearjen, gewoan wiskje of wiskje net-lege sellen. Om oare gefallen te ûndersykjen en op te lossen, sjoch asjebleaft #SPILL! flater yn Excel: wat it betsjut en hoe te reparearjen.

    #REF! flater

    Fankomt as in FILTER-formule brûkt wurdt tusken ferskate wurkboeken, en it boarnewurkboek is sletten.

    Dat is hoe't jo gegevens yn Excel dynamysk filterje. Ik tankje jo foar it lêzen en hoopje jo nije wike op ús blog te sjen!

    Download oefenwurkboek

    Filter yn Excel mei formules (.xlsx-bestân)

    hichte (as gegevens yn kolommen binne) of breedte (as gegevens yn rigen steane) moat gelyk wêze oan dy fan it argumint array .
  • If_empty (opsjoneel) - de wearde dy't weromjûn wurdt as gjin yngongen foldogge oan de kritearia.
  • De funksje FILTER is allinnich beskikber yn Excel foar Microsoft 365 en Excel 2021. Yn Excel 2019, Excel 2016 en eardere ferzjes wurdt it net stipe.

    Basic Excel FILTER formule

    Om te begjinnen, litte wy in pear heul ienfâldige gefallen beprate gewoan om te winnen mear begryp hoe't in Excel-formule om gegevens te filterjen wurket.

    Ut de ûndersteande gegevensset, stel dat jo de records mei in spesifike wearde ekstrahearje wolle yn 'e Groep , kolom, sis groep C. Om it dien te meitsjen, leverje wy de útdrukking B2:B13="C" oan it argumint include , dat in fereaske Booleaanske array sil produsearje, mei TRUE oerienkommende mei "C" wearden.

    =FILTER(A2:C13, B2:B13="C", "No results")

    Yn de praktyk is it handiger om de kritearia yn in aparte sel yn te fieren, bgl. F1, en brûk in selferwizing ynstee fan hardcoding de wearde direkt yn 'e formule:

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

    Oars as de filterfunksje fan Excel, makket de funksje gjin feroarings oan 'e orizjinele gegevens. It ekstrahearret de filtere records yn it saneamde spillbereik (E4: G7 yn 'e skermôfbylding hjirûnder), begjinnend yn' e sel wêr't de formule is ynfierd:

    As gjin records oerien mei de oantsjutte kritearia, de formule jout de wearde dy't jo sette yn 'e if_empty argumint, "Gjin resultaten" yn dit foarbyld:

    As jo ​​yn dit gefal leaver neat weromjaan , dan leverje in lege tekenrige ("") foar it lêste argumint:

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

    As jo ​​gegevens horizontaal fan links nei rjochts organisearre binne lykas werjûn yn 'e skermôfbylding hjirûnder, de FILTER funksje sil wurkje moai te. Soargje derfoar dat jo passende berik definiearje foar de array en omfetsje arguminten, sadat de boarne array en Booleaanske array deselde breedte hawwe:

    =FILTER(B2:M4, B3:M3= B7, "No results")

    Excel FILTER-funksje - gebrûksnotysjes

    Om effektyf te filterjen yn Excel mei formules, binne hjir in pear wichtige punten om op te merken:

    • De FILTER-funksje spilet de resultaten automatysk fertikaal of horizontaal yn it wurkblêd, ôfhinklik fan hoe't jo orizjinele gegevens binne organisearre. Soargje derfoar dat jo altyd genôch lege sellen nei ûnderen en nei rjochts hawwe, oars krije jo in #SPILL-flater.
    • De resultaten fan de Excel FILTER-funksje binne dynamysk, wat betsjut dat se automatysk bywurkje as wearden yn de oarspronklike dataset feroaring. It berik dat wurdt levere foar it argumint array wurdt lykwols net bywurke as nije yngongen wurde tafoege oan de boarnegegevens. As jo ​​​​wolle dat de array automatysk de grutte feroaret, konvertearje it dan nei in Excel-tabel en bouwe formules mei strukturearre referinsjes, of meitsje in dynamysk neamd berik.

    Hoe filterje yn Excel -formulefoarbylden

    No't jo witte hoe't in basis Excel-filterformule wurket, is it tiid om wat ynsjoch te krijen yn hoe't it kin wurde útwreide foar it oplossen fan kompleksere taken.

    Filter mei meardere kritearia (EN logika)

    Om gegevens mei meardere kritearia te filterjen, leverje jo twa of mear logyske útdrukkingen foar it argumint omfettet :

    FILTER(array, ( berik1= criteria1) * ( berik2= criteria2), "Gjin resultaten")

    De fermannichfâldigje operaasje ferwurket de arrays mei de EN logika , soargje derfoar dat allinich de records dy't foldogge oan alle kritearia wurde weromjûn. Technysk wurket it sa:

    It resultaat fan elke logyske útdrukking is in array fan Booleaanske wearden, wêrby't TRUE lyk is oan 1 en FALSE oan 0. Dan wurde de eleminten fan alle arrays op deselde posysjes fermannichfâldige . Om't fermannichfâldigjen mei nul altyd nul jout, komme allinich de items wêrfoar alle kritearia TRUE binne yn 'e resultearjende array, en dêrtroch wurde allinich dy items ekstrahearre.

    De ûndersteande foarbylden litte dizze generyske formule yn aksje sjen.

    Foarbyld 1. Filter meardere kolommen yn Excel

    Us basis Excel FILTER-formule in bytsje fierder útwreidzje, litte wy de gegevens troch twa kolommen filterje: Groep (kolom B) en Winst (kolom C).

    Dêrfoar sette wy de folgjende kritearia op: typ de namme fan de doelgroep yn F2 ( criteria1 ) en it minimaal fereaske oantal fanwint yn F3 ( criteria2 ).

    Sjoen dat ús boarnegegevens yn A2:C13 ( array binne), binne groepen yn B2:B13 ( berik1 ) en winst binne yn C2:C13 ( berik2 ), nimt de formule dizze foarm oan:

    =FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "No results")

    As resultaat krije jo in list mei spilers yn groep A dy't 2 of mear oerwinningen befeilige hawwe:

    Foarbyld 2. Filter gegevens tusken datums

    Earst moat opmurken wurde dat it net mooglik is om in generike formule te meitsjen om te filterjen op datum yn Excel. Yn ferskate situaasjes moatte jo kritearia oars bouwe, ôfhinklik fan oft jo wolle filterje op in spesifike datum, per moanne, of per jier. It doel fan dit foarbyld is om de algemiene oanpak te demonstrearjen.

    Aan ús foarbyldgegevens foegje wy noch ien kolom ta mei de datums fan 'e lêste winst (kolom D). En no sille wy de oerwinningen útpakke dy't yn in spesifike perioade barde, sizze tusken 17 maaie en 31 maaie.

    Let op dat yn dit gefal beide kritearia jilde foar itselde berik:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "No results")

    Dêr't G2 en G3 de datums binne om tusken te filterjen.

    Filter mei meardere kritearia (OF logika)

    Om gegevens út te heljen basearre op meardere OR-betingsten, brûke jo ek logyske útdrukkingen lykas werjûn yn 'e foarige foarbylden, mar ynstee fan fermannichfâldigje, foegje jo se op. As de Booleaanske arrays dy't troch de útdrukkingen weromjûn wurde opteld wurde, sil de resultearjende array 0 hawwe foar yngongen dy't gjin kritearia foldogge (d.w.s. allekritearia binne FALSE), en sokke ynstjoerings sille wurde filtere. De yngongen dêr't op syn minst ien kritearium TRUE foar is, wurde ekstrahearre.

    Hjir is de generyske formule om kolommen te filterjen mei de OF-logika:

    FILTER(array, ( berik1= criteria1) + ( berik2= criteria2), "Gjin resultaten")

    Litte wy as foarbyld in list útpakke mei spilers dy't dit of hawwe

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "No results")

    As resultaat witte jo hokker spilers alle spultsjes wûn hawwe (4) en hokker gjin wûn hawwe (0):

    Filter basearre op meardere EN as OF-kritearia

    In situaasje as jo beide kriteariatypen tapasse moatte, tink dan oan dizze ienfâldige regel: doch mei oan de EN-kritearia mei asterisk (*) en OR-kritearia mei de plus teken (+).

    Om bygelyks in list werom te jaan mei spilers dy't in opjûn oantal oerwinningen hawwe (F2) EN hearre ta de groep neamd yn E2 OF E3, bouwe de folgjende keten fan logyske útdrukkingen:

    =FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "No results")

    En jo krije it folgjende resultaat:

    Hoe kinne jo duplikaten filterje yn Excel

    By it wurkjen mei enoarme wurkblêden of it kombinearjen fan gegevens út ferskate boarnen, is d'r faaks de mooglikheid dat guon duplikaten ynslúte.

    As jo ​​sykje nei útfilteren duplikaten en extractunike items, brûk dan de UNIEKE funksje lykas útlein yn it boppesteande keppele tutorial.

    As jo ​​doel is om duplikaten te filterjen , dus ynstjoerings dy't mear as ien kear foarkomme, brûk dan de funksje FILTER tegearre mei COUNTIFS.

    It idee is om de foarfallen te krijen foar alle records en dy grutter dan 1 út te heljen. Om de tellen te krijen, leverje jo itselde berik foar elke criteria_range / kritearia pear COUNTIFS lykas dit:

    FILTER( array, COUNTIFS( column1, column1, column2, kolom2)>1, "Gjin resultaten")

    Bygelyks, om dûbele rigen te filterjen út de gegevens yn A2:C20 basearre op de wearden yn alle 3 kolommen, hjir is de formule om te brûken:

    =FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "No results")

    Tip. Om duplikaten te filterjen basearre op de wearden yn 'e kaaikolommen , befetsje allinich dy spesifike kolommen yn 'e COUNTIFS-funksje.

    Hoe kinne jo blanks filterje yn Excel

    In formule foar it filterjen fan lege sellen is eins in fariaasje fan de Excel FILTER-formule mei meardere EN-kritearia. Yn dit gefal kontrolearje wy oft alle (of bepaalde) kolommen gegevens yn har hawwe en de rigen útslute wêr't op syn minst ien sel leech is. Om net-lege sellen te identifisearjen, brûke jo de operator "net gelyk oan" () tegearre mei in lege tekenrige ("") lykas dit:

    FILTER(array, ( kolom1 "") * ( column2 =""), "Gjin resultaten")

    Mei de boarnegegevens yn A2:C12, om rigen út te filterjenmei ien of mear lege sellen, wurdt de folgjende formule ynfierd yn E3:

    Sellen filterje mei spesifike tekst

    Om sellen út te heljen dy't bepaalde tekst befetsje, kinne jo kin de FILTER-funksje brûke tegearre mei de klassike If-sel formule:

    FILTER(array, ISNUMBER(SEARCH(" tekst ", berik )), "Gjin resultaten")

    Hjir is hoe't it wurket:

    • De funksje SEARCH siket nei in spesifisearre tekststring yn in opjûn berik en jout of in nûmer (de posysje fan it earste karakter) of #VALUE! flater (tekst net fûn).
    • De funksje ISNUMBER konvertearret alle nûmers nei TRUE en flaters nei FALSE en jout de resultearjende Booleaanske array troch oan it argumint include fan de FILTER-funksje.

    Foar dit foarbyld hawwe wy de Achternammen fan spilers yn B2:B13 tafoege, it diel fan 'e namme ynfierd dat wy wolle fine yn G2, en brûk dan de folgjende formule om filterje de gegevens:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "No results")

    As resultaat hellet de formule de twa efternammen op dy't "han" befetsje:

    Filterje en berekkenje (Som, Average, Min, Max, ensfh.)

    In koel ding oer de Excel FILTER-funksje is dat it net allinich wearden mei betingsten ekstrahearje kin, mar ek de filtere gegevens gearfetsje. Kombinearje hjirfoar FILTER mei aggregaasjefunksjes lykas SUM, AVERAGE, COUNT, MAX of MIN.

    Om bygelyks gegevens foar in spesifike groep yn F1 te aggregearjen, brûk de folgjendeformules:

    Totaal winst:

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

    Gemiddelde winst:

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

    Maksimum winst:

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

    Minimale winst:

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

    Let op dat wy yn alle formules nul brûke foar it argumint if_empty , sadat de formules werom 0 as der gjin wearden fûn dy't foldogge oan de kritearia. It leverjen fan elke tekst lykas "Gjin resultaten" soe resultearje yn in #VALUE-flater, wat fansels it lêste is dat jo wolle :)

    Hoofdlettergefoelige FILTERformule

    In standert Excel FILTER-formule is net-gefoelich, wat betsjut dat it gjin ûnderskied makket tusken lytse letters en haadletters. Om tekstfallen te ûnderskieden, nêst de EXACT-funksje yn it argumint include . Dit sil FILTER twinge om logyske test te dwaan op in haadlettergefoelige manier:

    FILTER(array, EXACT( berik , kritearia ), "Gjin resultaten")

    Stel dat , jo hawwe beide groepen A en a en wolle records ekstrahearje wêrby't de groep de lytse letter "a" is. Om it dien te meitsjen, brûk de folgjende formule, wêrby't A2:C13 de boarnegegevens is en B2:B13 groepen binne om te filterjen:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "No results")

    As gewoanlik kinne jo de doelgroep ynfiere yn in foarbepaalde sel, sis F1, en brûk dy selferwizing ynstee fan hurdkodearre tekst:

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

    Hoe kinne jo gegevens FILTERE en allinich spesifike kolommen weromjaan

    Foar it grutste part is it filterjen fan alle kolommen mei ien formule wat Excel-brûkers wolle. Mar as jo boarne tabel befettet tsientallen of

    Michael Brown is in tawijd technology-entûsjast mei in passy foar it ferienfâldigjen fan komplekse prosessen mei software-ark. Mei mear as in desennium ûnderfining yn 'e tech-yndustry hat hy syn feardigens yn Microsoft Excel en Outlook, lykas Google Blêden en Docs, oanskerpe. Michael's blog is wijd oan it dielen fan syn kennis en ekspertize mei oaren, en biedt maklik te folgjen tips en tutorials foar it ferbetterjen fan produktiviteit en effisjinsje. Oft jo in betûfte profesjonele of in begjinner binne, Michael's blog biedt weardefolle ynsjoch en praktysk advys om it measte út dizze essensjele software-ark te heljen.