Excel FILTER funksie - dinamiese filter met formules

  • Deel Dit
Michael Brown

In hierdie vinnige les sal jy leer hoe om dinamies in Excel met formules te filter. Voorbeelde om duplikate te filter, selle wat sekere teks bevat, met veelvuldige kriteria, en meer.

Hoe filtreer jy gewoonlik in Excel? Meestal deur Auto Filter te gebruik, en in meer komplekse scenario's met Advanced Filter. Omdat hulle vinnig en kragtig is, het hierdie metodes een beduidende nadeel - hulle werk nie outomaties op wanneer jou data verander nie, wat beteken dat jy weer moet skoonmaak en filter. Die bekendstelling van die FILTER-funksie in Excel 365 word 'n langverwagte alternatief vir die konvensionele kenmerke. Anders as hulle, herbereken Excel-formules outomaties met elke werkbladverandering, so jy sal jou filter net een keer moet opstel!

    Excel FILTER-funksie

    Die FILTER-funksie in Excel word gebruik om 'n reeks data te filter op grond van die kriteria wat jy spesifiseer.

    Die funksie behoort aan die kategorie Dinamiese Skikkings-funksies. Die resultaat is 'n reeks waardes wat outomaties in 'n reeks selle mors, vanaf die sel waar jy 'n formule invoer.

    Die sintaksis van die FILTER-funksie is soos volg:

    FILTER(skikking, sluit in , [if_empty])

    Waar:

    • Skikking (vereis) - die reeks of skikking waardes wat jy wil filter.
    • Sluit (vereis) - die kriteria verskaf as 'n Boole-skikking (WAAR en ONWAAR waardes).

      Dit isselfs honderde kolomme, sal jy beslis die resultate tot 'n paar belangrikstes wil beperk.

      Voorbeeld 1. Filtreer sommige aangrensende kolomme

      In situasies wanneer jy wil hê dat sommige naburige kolomme in moet verskyn 'n FILTER-resultaat, sluit slegs daardie kolomme in skikking in, want dit is hierdie argument wat bepaal watter kolomme om terug te gee.

      In die basiese FILTER-formulevoorbeeld, veronderstel jy wil die eerste 2 kolomme terugstuur. ( Naam en Groep ). So, jy verskaf A2:B13 vir die skikking -argument:

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

      As gevolg hiervan kry ons 'n lys van deelnemers van die teikengroep wat in F1 gedefinieer is:

      Voorbeeld 2. Filter nie-aangrensende kolomme

      Om te veroorsaak dat die FILTER-funksie nie-aangrensende kolomme terugstuur, gebruik hierdie slim truuk:

      1. Maak 'n FILTER-formule met die verlangde toestand(e) deur die hele tabel vir skikking te gebruik.
      2. Neste bogenoemde formule binne 'n ander FILTER-funksie. Om die "wrapper"-funksie te konfigureer, gebruik 'n skikkingkonstante van WAAR en ONWAAR waardes of 1'e en 0'e vir die sluit in -argument, waar WAAR (1) die kolomme wat gehou moet word, en ONWAAR (0) merk die kolomme wat uitgesluit moet word.

      Om byvoorbeeld slegs Name (1ste kolom) en Wins (3de kolom) terug te gee, gebruik ons ​​{1, 0,1} of {TRUE,FALSE,TRUE} vir die insluit -argument van die buitenste FILTER-funksie:

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

      Of

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

      Hoe om dieaantal rye wat deur FILTER-funksie teruggestuur word

      As jou FILTER-formule nogal baie resultate kry, maar jou werkblad het beperkte spasie en jy kan nie die data hieronder uitvee nie, dan kan jy die aantal rye wat die FILTER-funksie terugstuur beperk, beperk .

      Kom ons kyk hoe dit werk op 'n voorbeeld van 'n eenvoudige formule wat spelers uit die teikengroep in F1 trek:

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

      Bogenoemde formule voer al die rekords uit wat dit vind, 4 rye in ons geval. Maar gestel jy het net plek vir twee. Om slegs die eerste 2 gevind rye uit te voer, is dit wat jy moet doen:

      • Plug die FILTER formule in die skikking argument van die INDEX funksie.
      • Vir die ry_getal argument van INDEX, gebruik 'n vertikale skikking konstante soos {1;2}. Dit bepaal hoeveel rye om terug te gee (2 in ons geval).
      • Vir die kolom_getal argument, gebruik 'n horisontale skikking konstante soos {1,2,3}. Dit spesifiseer watter kolomme om terug te gee (die eerste 3 kolomme in hierdie voorbeeld).
      • Om te sorg vir moontlike foute wanneer geen data gevind word wat by jou kriteria pas nie, kan jy jou formule in die IFERROR-funksie toevou.

    Die volledige formule neem hierdie vorm aan:

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

    Wanneer daar met groot tabelle gewerk word, kan die skryf van skikkingkonstantes met die hand wees nogal omslagtig. Geen probleem nie, die SEQUENCE-funksie kan die opeenvolgende nommers outomaties vir jou genereer:

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

    Die eerste VOLGORDE genereer 'n vertikale skikkingwat soveel opeenvolgende nommers bevat soos gespesifiseer in die eerste (en enigste) argument. Die tweede VOLGORDE gebruik die KOLOMME-funksie om die aantal kolomme in die datastel te tel en produseer 'n ekwivalente horisontale skikking.

    Wenk. Om data van spesifieke kolomme terug te gee, sluit nie al die kolomme in die horisontale skikkingkonstante wat jy vir die kolom_getal -argument van INDEX gebruik slegs daardie spesifieke getalle in nie. Byvoorbeeld, om data uit die 1ste en 3de kolomme te onttrek, gebruik {1,3}.

    Excel FILTER funksie werk nie

    In situasies wanneer jou Excel FILTER formule 'n fout tot gevolg het, sal dit heel waarskynlik een van die volgende wees:

    #CALC! fout

    Kom voor as die opsionele as_leeg -argument weggelaat word, en geen resultate wat aan die kriteria voldoen word gevind nie. Die rede is dat Excel tans nie leë skikkings ondersteun nie. Om sulke foute te voorkom, maak seker dat jy altyd die if_empty -waarde in jou formules definieer.

    #VALUE-fout

    Kom voor wanneer die skikking en insluit -argument het onversoenbare afmetings.

    #N/A, #VALUE, ens.

    Verskillende foute kan voorkom as een of ander waarde in die insluit -argument is 'n fout of kan nie na 'n Boole-waarde omgeskakel word nie.

    #NAME-fout

    Kom voor wanneer FILTER in 'n ouer weergawe van Excel probeer gebruik word. Onthou asseblief dat dit 'n nuwe funksie is, wat slegs in Office 365 en Excel 2021 beskikbaar is.

    Innuwe Excel, 'n #NAAM-fout vind plaas as jy die funksie se naam per ongeluk verkeerd spel.

    #STORINGS-fout

    Dikwels kom hierdie fout voor as een of meer selle in die stortingsreeks nie heeltemal leeg is nie . Om dit reg te stel, vee net nie-leë selle uit of vee dit uit. Om ander sake te ondersoek en op te los, sien asseblief #MORS! fout in Excel: wat dit beteken en hoe om reg te stel.

    #VERW! fout

    Kom voor wanneer 'n FILTER-formule tussen verskillende werkboeke gebruik word, en die bronwerkboek is gesluit.

    Dit is hoe om data in Excel dinamies te lêer. Ek bedank jou vir die lees en hoop om jou volgende week op ons blog te sien!

    Laai oefenwerkboek af

    Filter in Excel met formules (.xlsx-lêer)

    hoogte (wanneer data in kolomme is) of breedte (wanneer data in rye is) moet gelyk wees aan dié van die skikking -argument.
  • As_leeg (opsioneel) - die waarde om terug te gee wanneer geen inskrywings aan die kriteria voldoen nie.
  • Die FILTER-funksie is slegs beskikbaar in Excel vir Microsoft 365 en Excel 2021. In Excel 2019, Excel 2016 en vroeër weergawes word dit nie ondersteun nie.

    Basiese Excel-FILTER-formule

    Om mee te begin, kom ons bespreek 'n paar baie eenvoudige gevalle net om te wen meer verstaan ​​hoe 'n Excel-formule werk om data te filter.

    Uit die onderstaande datastel, veronderstel jy wil die rekords met 'n spesifieke waarde in die Groep , kolom, sê groep C onttrek. Om dit te laat doen, verskaf ons die uitdrukking B2:B13="C" aan die insluit -argument, wat 'n vereiste Boole-skikking sal produseer, met WAAR wat ooreenstem met "C"-waardes.

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

    In die praktyk is dit geriefliker om die kriteria in 'n aparte sel in te voer, bv. F1, en gebruik 'n selverwysing in plaas daarvan om die waarde direk in die formule te hardkodeer:

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

    Anders as Excel se Filter-kenmerk, maak die funksie geen veranderinge aan die oorspronklike data nie. Dit onttrek die gefiltreerde rekords in die sogenaamde morsreeks (E4:G7 in die skermkiekie hieronder), begin in die sel waar die formule ingevoer word:

    Indien geen rekords is nie ooreenstem met die gespesifiseerde kriteria, gee die formule die waarde wat jy in die if_empty argument, "Geen resultate" in hierdie voorbeeld:

    As jy liewer niks wil teruggee nie in hierdie geval, dan verskaf 'n leë string ("") vir die laaste argument:

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

    In die geval dat jou data horisontaal van links na regs georganiseer is soos in die skermkiekie hieronder, die FILTER-funksie sal ook goed werk. Maak net seker jy definieer toepaslike reekse vir die skikking en sluit argumente in, sodat die bronskikking en Boole-skikking dieselfde breedte het:

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

    Excel FILTER-funksie - gebruiksnotas

    Om doeltreffend in Excel met formules te filtreer, is hier 'n paar belangrike punte om van kennis te neem:

    • Die FILTER-funksie mors outomaties die resultate vertikaal of horisontaal in die werkblad, afhangende van hoe jou oorspronklike data georganiseer is. Maak dus asseblief seker dat jy altyd genoeg leë selle onder en na regs het, anders sal jy 'n #MORS-fout kry.
    • Die resultate van die Excel FILTER-funksie is dinamies, wat beteken dat hulle outomaties bywerk wanneer waardes in die oorspronklike datastel verander. Die reeks wat vir die skikking -argument verskaf word, word egter nie opgedateer wanneer nuwe inskrywings by die brondata gevoeg word nie. As jy wil hê die skikking moet outomaties die grootte verander, skakel dit dan om na 'n Excel-tabel en bou formules met gestruktureerde verwysings, of skep 'n dinamiese benoemde reeks.

    Hoe om in Excel te filter -formulevoorbeelde

    Noudat jy weet hoe 'n basiese Excel-filterformule werk, is dit tyd om 'n paar insigte te kry oor hoe dit uitgebrei kan word om meer komplekse take op te los.

    Filter met veelvuldige kriteria (EN logika)

    Om data met veelvuldige kriteria te filter, verskaf jy twee of meer logiese uitdrukkings vir die sluit in -argument:

    FILTER(skikking, ( reeks1= kriteria1) * ( reeks2= kriteria2), "Geen resultate")

    Die vermenigvuldigingsbewerking verwerk die skikkings met die EN-logika , om te verseker dat slegs die rekords wat aan al die kriteria voldoen, teruggestuur word. Tegnies werk dit so:

    Die resultaat van elke logiese uitdrukking is 'n skikking van Boole-waardes, waar WAAR gelykstaande is aan 1 en ONWAAR aan 0. Dan word die elemente van al die skikkings in dieselfde posisies vermenigvuldig . Aangesien vermenigvuldiging met nul altyd nul gee, kom slegs die items waarvoor al die kriteria WAAR is in die resulterende skikking in, en gevolglik word slegs daardie items onttrek.

    Die onderstaande voorbeelde wys hierdie generiese formule in aksie.

    Voorbeeld 1. Filtreer veelvuldige kolomme in Excel

    Om ons basiese Excel FILTER-formule 'n bietjie verder uit te brei, kom ons filtreer die data deur twee kolomme: Groep (kolom B) en Wen (kolom C).

    Hiervoor stel ons die volgende kriteria op: tik die naam van die teikengroep in F2 ( kriteria1 ) en die minimum vereiste aantalwen in F3 ( kriteria2 ).

    Gegewe dat ons brondata in A2:C13 ( skikking is), is groepe in B2:B13 ( reeks1 ) en oorwinnings is in C2:C13 ( reeks2 ), neem die formule hierdie vorm aan:

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

    As gevolg hiervan kry jy 'n lys spelers in groep A wat 2 of meer oorwinnings behaal het:

    Voorbeeld 2. Filtreer data tussen datums

    Eerstens moet daarop gelet word dat dit nie moontlik is nie om 'n generiese formule op te stel om volgens datum in Excel te filter. In verskillende situasies sal jy kriteria anders moet bou, afhangende van of jy volgens 'n spesifieke datum, per maand of volgens jaar wil filter. Die doel van hierdie voorbeeld is om die algemene benadering te demonstreer.

    By ons voorbeelddata voeg ons nog een kolom wat die datums van die laaste oorwinning bevat (kolom D). En nou sal ons die oorwinnings onttrek wat in 'n spesifieke tydperk plaasgevind het, sê tussen 17 Mei en 31 Mei.

    Let asseblief op dat in hierdie geval, beide kriteria van toepassing is op dieselfde reeks:

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

    Waar G2 en G3 die datums is om tussen te filter.

    Filter met veelvuldige kriteria (OF logika)

    Om data te onttrek gebaseer op veelvuldige OF-toestand, gebruik jy ook logiese uitdrukkings soos in die vorige voorbeelde getoon, maar in plaas daarvan om te vermenigvuldig, tel jy hulle op. Wanneer die Boole-skikkings wat deur die uitdrukkings teruggestuur word opgetel word, sal die resulterende skikking 0 hê vir inskrywings wat nie aan enige kriteria voldoen nie (d.w.s. al diekriteria is ONWAAR), en sulke inskrywings sal uitgefiltreer word. Die inskrywings waarvoor ten minste een kriterium WAAR is, sal onttrek word.

    Hier is die generiese formule om kolomme met die OF-logika te filter:

    FILTER(skikking, ( reeks1= kriteria1) + ( reeks2= kriteria2), "Geen resultate nie")

    Kom ons haal as voorbeeld 'n lys spelers uit wat dit of het daardie aantal oorwinnings.

    As die brondata in A2:C13 is, oorwinnings in C2:C13 is, en die wengetalle van belang is in F2 en F3, sal die formule soos volg verloop:

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

    As gevolg hiervan weet jy watter spelers al die wedstryde gewen het (4) en watter geen gewen het nie (0):

    Filter gebaseer op veelvuldige EN- sowel as OF-kriteria

    In situasies wanneer jy albei kriteriatipes moet toepas, onthou hierdie eenvoudige reël: sluit aan by die EN-kriteria met asterisk (*) en OF-kriteria met die plus teken (+).

    Om byvoorbeeld 'n lys spelers terug te gee wat 'n gegewe aantal oorwinnings (F2) het EN behoort aan die groep genoem in óf E2 OF E3, bou die volgende ketting van logiese uitdrukkings:

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

    En jy sal die volgende resultaat kry:

    Hoe om duplikate in Excel te filter

    Wanneer jy met groot werkblaaie werk of data van verskillende bronne kombineer, is daar dikwels 'n moontlikheid dat sommige duplikate sal insluip.

    As jy op soek is na uitfilter duplikate en uittrekselunieke items, gebruik dan die UNIEKE funksie soos verduidelik in die bogenoemde gekoppelde tutoriaal.

    As jou doel is om duplikate te filter , dit wil sê inskrywings wat meer as een keer voorkom, gebruik dan die FILTER-funksie saam met COUNTIFS.

    Die idee is om die voorkomstetellings vir al die rekords te kry en dié groter as 1 te onttrek. Om die tellings te kry, verskaf jy dieselfde reeks vir elke kriteria_reeks / kriteria paar COUNTIFS soos hierdie:

    FILTER( skikking, COUNTIFS( kolom1, kolom1, kolom2, kolom2)>1, "Geen resultate")

    Om byvoorbeeld duplikaatrye uit die data in A2:C20 te filter op grond van die waardes in al 3 kolomme, is hier die formule om te gebruik:

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

    Wenk. Om duplikate te filtreer gebaseer op die waardes in die sleutelkolomme , sluit slegs daardie spesifieke kolomme in die COUNTIFS-funksie in.

    Hoe om spasies in Excel uit te filter

    'n Formule vir die uitfiltrering van leë selle is in werklikheid 'n variasie van die Excel FILTER-formule met veelvuldige EN-kriteria. In hierdie geval kyk ons ​​of alle (of spesifieke) kolomme enige data in het en sluit die rye uit waar ten minste een sel leeg is. Om nie-leë selle te identifiseer, gebruik jy die "nie gelyk aan" operateur () saam met 'n leë string ("") soos hierdie:

    FILTER(skikking, ( kolom1 "") * ( kolom2 =""), "Geen resultate nie")

    Met die brondata in A2:C12, om rye uit te filterwat een of meer leë selle bevat, word die volgende formule in E3 ingevoer:

    Filter selle wat spesifieke teks bevat

    Om selle te onttrek wat sekere teks bevat, moet jy kan die FILTER-funksie gebruik saam met die klassieke As sel formule bevat:

    FILTER(skikking, ISNUMBER(SOEK(" teks ", reeks )), "Geen resultate")

    Hier is hoe dit werk:

    • Die SOEK-funksie soek 'n gespesifiseerde teksstring in 'n gegewe reeks en gee óf 'n getal (die posisie van die eerste karakter) óf #WAARDE! fout (teks nie gevind nie).
    • Die ISNUMBER-funksie verander al die getalle na WAAR en foute na ONWAAR en gee die resulterende Boole-skikking deur na die insluit -argument van die FILTER-funksie.

    Vir hierdie voorbeeld het ons die Vanne van spelers in B2:B13 bygevoeg, die deel van die naam wat ons in G2 wil vind getik, en gebruik dan die volgende formule om filtreer die data:

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

    As gevolg hiervan kry die formule die twee vanne wat "han" bevat:

    Filter en bereken (Som, Gemiddeld, Min, Maks, ens.)

    'n Gawe ding van die Excel FILTER-funksie is dat dit nie net waardes met voorwaardes kan onttrek nie, maar ook die gefiltreerde data kan opsom. Hiervoor, kombineer FILTER met samevoegingsfunksies soos SUM, AVERAGE, COUNT, MAX of MIN.

    Om byvoorbeeld data vir 'n spesifieke groep in F1 te versamel, gebruik die volgendeformules:

    Totale oorwinnings:

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

    Gemiddelde oorwinnings:

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

    Maksimum oorwinnings:

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

    Minimum oorwinnings:

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

    Let asseblief daarop dat ons in al die formules nul gebruik vir die as_leeg argument, sodat die formules gee 0 terug as geen waardes gevind word wat aan die kriteria voldoen nie. Die verskaffing van enige teks soos "Geen resultate" sal lei tot 'n #VALUE-fout, wat natuurlik die laaste ding is wat jy wil hê :)

    Hooflettersensitiewe FILTERformule

    'n Standaard Excel-FILTER-formule is hoofletter-onsensitief, wat beteken dit maak geen onderskeid tussen kleinletters en hoofletters nie. Om teksletters te onderskei, nes die EXACT-funksie in die sluit in -argument. Dit sal FILTER dwing om logiese toets op 'n hooflettergevoelige manier te doen:

    FILTER(skikking, EXACT( reeks , kriteria ), "Geen resultate")

    Gestel , jy het beide groepe A en a en wil rekords onttrek waar die groep die kleinletter "a" is. Om dit te laat doen, gebruik die volgende formule, waar A2:C13 die brondata is en B2:B13 groepe is om te filter:

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

    Soos gewoonlik kan jy die teikengroep invoer in 'n voorafbepaalde sel, sê F1, en gebruik daardie selverwysing in plaas van hardgekodeerde teks:

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

    Hoe om data te FILTREER en slegs spesifieke kolomme terug te gee

    Die filter van alle kolomme met 'n enkele formule is meestal wat Excel-gebruikers wil hê. Maar as jou brontabel tiene of bevat

    Michael Brown is 'n toegewyde tegnologie-entoesias met 'n passie om komplekse prosesse te vereenvoudig deur sagteware-instrumente te gebruik. Met meer as 'n dekade se ondervinding in die tegnologiebedryf, het hy sy vaardighede in Microsoft Excel en Outlook, sowel as Google Sheets en Docs, opgeskerp. Michael se blog is toegewy daaraan om sy kennis en kundigheid met ander te deel, en verskaf maklik-om-te volg wenke en tutoriale vir die verbetering van produktiwiteit en doeltreffendheid. Of jy nou 'n ervare professionele persoon of 'n beginner is, Michael se blog bied waardevolle insigte en praktiese raad om die meeste uit hierdie noodsaaklike sagteware-nutsmiddels te kry.