Excel FILTER functie - dynamisch filteren met formules

  • Deel Dit
Michael Brown

In deze snelle les leert u hoe u in Excel dynamisch kunt filteren met formules. Voorbeelden om dubbels te filteren, cellen die bepaalde tekst bevatten, met meerdere criteria, en meer.

Hoe filtert u meestal in Excel? Meestal met Auto Filter, en in meer complexe scenario's met Advanced Filter. Deze methoden zijn snel en krachtig, maar hebben één belangrijk nadeel - ze worden niet automatisch bijgewerkt wanneer uw gegevens veranderen, wat betekent dat u moet opschonen en opnieuw moet filteren. De introductie van de FILTER-functie in Excel 365 wordt een langverwacht alternatief voorde conventionele functies. In tegenstelling tot hen worden Excel-formules automatisch herberekend bij elke wijziging van het werkblad, zodat u uw filter slechts één keer hoeft in te stellen!

    Excel FILTER functie

    De functie FILTER in Excel wordt gebruikt om een gegevensbereik te filteren op basis van de criteria die u opgeeft.

    De functie behoort tot de categorie Dynamische matrixfuncties. Het resultaat is een matrix van waarden die automatisch overloopt in een reeks cellen, beginnend bij de cel waar u een formule invoert.

    De syntaxis van de FILTER-functie is als volgt:

    FILTER(array, include, [if_empty])

    Waar:

    • Array (vereist) - het bereik of de matrix van waarden die u wilt filteren.
    • Opnemen (vereist) - de criteria in de vorm van een Booleaanse matrix (waarden TRUE en FALSE).

      De hoogte (bij gegevens in kolommen) of breedte (bij gegevens in rijen) moet gelijk zijn aan die van de array argument.

    • Als_leeg (facultatief) - de waarde die moet worden teruggegeven wanneer geen items aan de criteria voldoen.

    De functie FILTER is alleen beschikbaar in Excel voor Microsoft 365 en Excel 2021. In Excel 2019, Excel 2016 en eerdere versies wordt deze functie niet ondersteund.

    Basis Excel FILTER formule

    Laten we om te beginnen een paar zeer eenvoudige gevallen bespreken om beter te begrijpen hoe een Excel-formule om gegevens te filteren werkt.

    Stel dat u uit de onderstaande gegevensverzameling de records wilt halen met een specifieke waarde in de Groep , kolom, zeg groep C. Om dit te laten doen, geven we de uitdrukking B2:B13="C" aan de omvatten argument, dat een vereiste Booleaanse matrix oplevert, waarbij TRUE overeenkomt met "C"-waarden.

    =FILTER(A2:C13, B2:B13="C", "Geen resultaten")

    In de praktijk is het handiger om de criteria in een aparte cel in te voeren, bijvoorbeeld F1, en een celverwijzing te gebruiken in plaats van de waarde rechtstreeks in de formule te coderen:

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

    In tegenstelling tot de filterfunctie van Excel, brengt de functie geen wijzigingen aan in de oorspronkelijke gegevens. Zij haalt de gefilterde records uit het zogenaamde morsenbereik (E4:G7 in de onderstaande schermafbeelding), beginnend in de cel waar de formule wordt ingevoerd:

    Als er geen records aan de opgegeven criteria voldoen, geeft de formule de waarde terug die u in het veld if_empty argument, "Geen resultaten" in dit voorbeeld:

    Als je liever stuur niets terug in dit geval een lege tekenreeks ("") als laatste argument:

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

    Als uw gegevens georganiseerd zijn horizontaal van links naar rechts zoals in de schermafbeelding hieronder, werkt de FILTER-functie ook prima. Zorg er alleen voor dat je de juiste bereiken definieert voor de array en omvatten argumenten, zodat de bron-array en de Booleaanse array dezelfde breedte hebben:

    =FILTER(B2:M4, B3:M3= B7, "Geen resultaten")

    Excel FILTER functie - gebruiksaanwijzingen

    Om effectief te filteren in Excel met formules, zijn er een paar belangrijke punten waarop u moet letten:

    • De FILTER-functie morst de resultaten automatisch verticaal of horizontaal in het werkblad, afhankelijk van hoe uw oorspronkelijke gegevens zijn georganiseerd. Zorg er dus voor dat u altijd voldoende lege cellen naar beneden en naar rechts hebt, anders krijgt u een #SPILL-fout.
    • De resultaten van de Excel FILTER-functie zijn dynamisch, wat betekent dat zij automatisch worden bijgewerkt wanneer de waarden in de oorspronkelijke gegevensverzameling veranderen. Het bereik dat wordt geleverd voor de array argument wordt niet bijgewerkt wanneer nieuwe items worden toegevoegd aan de brongegevens. Als u wilt dat de array om het formaat automatisch aan te passen, zet het dan om in een Excel-tabel en maak formules met gestructureerde verwijzingen, of maak een dynamisch naambereik.

    Filteren in Excel - formulevoorbeelden

    Nu u weet hoe een basis Excel-filterformule werkt, is het tijd om inzicht te krijgen in hoe deze kan worden uitgebreid voor het oplossen van complexere taken.

    Filter met meerdere criteria (AND-logica)

    Om gegevens met meerdere criteria te filteren, geeft u twee of meer logische expressies voor de omvatten argument:

    FILTER(array, ( reeks1 = criteria1 ) * ( reeks2 = criteria2 ), "Geen resultaten")

    De vermenigvuldiging verwerkt de arrays met de AND logica en zorgt ervoor dat alleen de records die voldoen aan alle criteria worden geretourneerd. Technisch gezien werkt het zo:

    Het resultaat van elke logische expressie is een array van Booleaanse waarden, waarbij TRUE gelijk is aan 1 en FALSE aan 0. Vervolgens worden de elementen van alle arrays op dezelfde posities vermenigvuldigd. Aangezien vermenigvuldiging met nul altijd nul oplevert, komen alleen de items waarvoor alle criteria TRUE zijn in de resulterende array, en bijgevolg worden alleen die items geëxtraheerd.

    De onderstaande voorbeelden tonen deze algemene formule in actie.

    Voorbeeld 1. Meerdere kolommen filteren in Excel

    Als we onze basisformule FILTER in Excel nog iets verder uitbreiden, filteren we de gegevens op twee kolommen: Groep (kolom B) en Wint (kolom C).

    Daartoe stellen wij de volgende criteria in: typ de naam van de doelgroep in F2 ( criteria1 ) en het minimaal vereiste aantal overwinningen in F3 ( criteria2 ).

    Aangezien onze brongegevens in A2:C13 ( array ), groepen in B2:B13 ( reeks1 ) en wint in C2:C13 ( reeks2 ), neemt de formule deze vorm aan:

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

    Als resultaat krijg je een lijst van spelers in groep A die 2 of meer overwinningen hebben behaald:

    Voorbeeld 2. Gegevens filteren tussen data

    Allereerst moet worden opgemerkt dat het niet mogelijk is een algemene formule te verzinnen om in Excel te filteren op datum. In verschillende situaties moet u de criteria anders opbouwen, afhankelijk van of u wilt filteren op een specifieke datum, op maand of op jaar. Het doel van dit voorbeeld is de algemene aanpak te demonstreren.

    Aan onze voorbeeldgegevens voegen we nog een kolom toe met de data van de laatste overwinning (kolom D). En nu halen we de overwinningen eruit die in een bepaalde periode zijn behaald, bijvoorbeeld tussen 17 mei en 31 mei.

    Merk op dat in dit geval beide criteria van toepassing zijn op hetzelfde bereik:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "Geen resultaten")

    Waarbij G2 en G3 de data zijn waartussen moet worden gefilterd.

    Filter met meerdere criteria (OR-logica)

    Om gegevens te extraheren op basis van meerdere OF-condities, gebruikt u ook logische expressies zoals in de vorige voorbeelden, maar in plaats van te vermenigvuldigen, telt u ze op. Wanneer de Booleaanse arrays die door de expressies worden geretourneerd, worden opgeteld, zal de resulterende array 0 hebben voor vermeldingen die aan geen enkel criterium voldoen (d.w.z. alle criteria zijn FALSE), en dergelijke vermeldingen worden uitgefilterd. De vermeldingen waarvoor opten minste één criterium WAAR is, wordt geëxtraheerd.

    Hier is de algemene formule om kolommen te filteren met de OR-logica:

    FILTER(array, ( reeks1 = criteria1 ) + ( reeks2 = criteria2 ), "Geen resultaten")

    Laten we als voorbeeld een lijst samenstellen van spelers die dit of dat aantal overwinningen.

    Ervan uitgaande dat de brongegevens in A2:C13 staan, de winsten in C2:C13, en de interessante wingetallen in F2 en F3, gaat de formule als volgt:

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "Geen resultaten")

    Daardoor weet je welke spelers alle partijen hebben gewonnen (4) en welke geen enkele (0):

    Filteren op basis van meerdere EN- en OF-criteria

    In situaties waarin u beide criteriatypes moet toepassen, onthoud dan deze eenvoudige regel: voeg de AND-criteria samen met een sterretje (*) en OR-criteria met het plusteken (+).

    Bijvoorbeeld, om een lijst van spelers terug te geven die een bepaald aantal overwinningen hebben (F2) EN behoren tot de groep vermeld in E2 OF E3, bouwt u de volgende keten van logische expressies:

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

    En je krijgt het volgende resultaat:

    Hoe duplicaten filteren in Excel

    Bij het werken met grote werkbladen of het combineren van gegevens uit verschillende bronnen, is het vaak mogelijk dat er duplicaten in sluipen.

    Als u op zoek bent naar uitfilteren duplicaten en haal er unieke items uit, gebruik dan de functie UNIQUE zoals uitgelegd in de hierboven gelinkte handleiding.

    Als uw doel is om filter duplicaten d.w.z. entries die meer dan eens voorkomen eruit halen, gebruik dan de FILTER-functie samen met COUNTIFS.

    Het idee is om voor alle records het aantal voorkomens te tellen en die groter dan 1 eruit te halen. Om de tellingen te krijgen, levert u hetzelfde bereik voor elke criteria_bereik / criteria paar COUNTIFS zoals dit:

    FILTER( array , COUNTIFS( kolom1 , column1, kolom2 , kolom2 )>1, "Geen resultaten")

    Om bijvoorbeeld dubbele rijen te filteren uit de gegevens in A2:C20 op basis van de waarden in alle 3 de kolommen, is hier de te gebruiken formule:

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

    Tip. Om duplicaten te filteren op basis van de waarden in de belangrijke kolommen alleen die specifieke kolommen in de functie COUNTIFS opnemen.

    Hoe spaties uit te filteren in Excel

    Een formule voor het uitfilteren van lege cellen is in feite een variant van de Excel FILTER-formule met meerdere EN-criteria. In dit geval controleren we of alle (of bepaalde) kolommen gegevens bevatten en sluiten we de rijen uit waar ten minste één cel leeg is. Om niet-blanke cellen te identificeren, gebruikt u de "niet gelijk aan"-operator () in combinatie met een lege tekenreeks (""), zoals hieronder:

    FILTER(array, ( kolom1 "") * ( kolom2 =""), "Geen resultaten")

    Met de brongegevens in A2:C12 wordt, om rijen met één of meer lege cellen uit te filteren, de volgende formule ingevoerd in E3:

    Filter cellen met specifieke tekst

    Om cellen die bepaalde tekst bevatten te extraheren, kunt u de functie FILTER gebruiken in combinatie met de klassieke formule If cell contains:

    FILTER(array, ISNUMBER(ZOEK(" tekst ", reeks )), "Geen resultaten")

    Dit is hoe het werkt:

    • De functie SEARCH zoekt een opgegeven tekststring in een bepaald bereik en geeft ofwel een getal (de positie van het eerste teken) ofwel de foutmelding #VALUE! (tekst niet gevonden).
    • De functie ISNUMBER converteert alle getallen naar TRUE en fouten naar FALSE en geeft de resulterende Booleaanse array door aan de omvatten argument van de FILTER-functie.

    Voor dit voorbeeld hebben we de Achternamen van de spelers in B2:B13, typ het deel van de naam dat we willen vinden in G2, en gebruik dan de volgende formule om de gegevens te filteren:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "Geen resultaten")

    Als resultaat geeft de formule de twee achternamen die "han" bevatten:

    Filteren en berekenen (som, gemiddelde, min, max, enz.)

    Het leuke van de Excel FILTER-functie is dat deze niet alleen waarden met voorwaarden kan extraheren, maar ook de gefilterde gegevens kan samenvatten. Combineer hiervoor FILTER met aggregatiefuncties zoals SUM, AVERAGE, COUNT, MAX of MIN.

    Om bijvoorbeeld gegevens voor een specifieke groep in F1 samen te voegen, gebruikt u de volgende formules:

    Totaal aantal overwinningen:

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

    Gemiddeld wint:

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

    Maximale winst:

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

    Minimale winst:

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

    Let erop dat we in alle formules nul gebruiken voor de if_empty De formules zouden dus 0 teruggeven als er geen waarden worden gevonden die aan de criteria voldoen. Een tekst als "Geen resultaten" zou resulteren in een #VALUE-fout, wat uiteraard het laatste is wat je wilt :)

    Hoofdlettergevoelige FILTER-formule

    Een standaard Excel FILTER-formule is hoofdletterongevoelig, wat betekent dat deze geen onderscheid maakt tussen kleine letters en hoofdletters. Om onderscheid te maken tussen hoofdletters en kleine letters nestelt u de EXACT-functie in de omvatten Dit dwingt FILTER om de logische test hoofdlettergevoelig uit te voeren:

    FILTER(array, EXACT( reeks , criteria ), "Geen resultaten")

    Stel, je hebt beide groepen A en a en wenst records te extraheren waarvan de groep de kleine letter "a" is. Gebruik daarvoor de volgende formule, waarbij A2:C13 de brongegevens zijn en B2:B13 de te filteren groepen:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "Geen resultaten")

    Zoals gebruikelijk kunt u de doelgroep invoeren in een vooraf gedefinieerde cel, bijvoorbeeld F1, en die celverwijzing gebruiken in plaats van hardcodetekst:

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

    Hoe gegevens filteren en alleen specifieke kolommen retourneren

    Meestal is het filteren van alle kolommen met een enkele formule wat Excel-gebruikers willen. Maar als uw brontabel tientallen of zelfs honderden kolommen bevat, kunt u de resultaten zeker willen beperken tot enkele van de belangrijkste.

    Voorbeeld 1. Filter enkele aangrenzende kolommen

    In de situatie dat u wilt dat sommige naburige kolommen in een FILTER-resultaat verschijnen, neemt u alleen die kolommen op in array omdat dit argument bepaalt welke kolommen worden geretourneerd.

    In het voorbeeld van de basisformule FILTER, stel dat u de eerste 2 kolommen ( Naam en Groep ). U levert dus A2:B13 voor de array argument:

    =FILTER(A2:B13, B2:B13=F1, "Geen resultaten")

    Het resultaat is een lijst van deelnemers aan de in F1 gedefinieerde doelgroep:

    Voorbeeld 2. Filter niet-aangrenzende kolommen

    Om de FILTER-functie niet-aaneengesloten kolommen te laten teruggeven, gebruikt u deze slimme truc:

    1. Maak een FILTER-formule met de gewenste voorwaarde(n) door de hele tabel te gebruiken voor array .
    2. Nest de bovenstaande formule in een andere FILTER-functie. Om de "wrapper"-functie te configureren, gebruikt u een arrayconstante van TRUE- en FALSE-waarden of 1's en 0's voor de omvatten argument, waarbij TRUE (1) de te behouden kolommen aangeeft en FALSE (0) de uit te sluiten kolommen.

    Om bijvoorbeeld alleen Namen (1e kolom) en Wint (3e kolom) gebruiken we {1,0,1} of {TRUE,FALSE,TRUE} voor de omvatten argument van de buitenste FILTER-functie:

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

    Of

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

    Hoe het aantal rijen dat door de FILTER-functie wordt geretourneerd te beperken

    Indien uw FILTER-formule vrij veel resultaten vindt, maar uw werkblad beperkte ruimte heeft en u de gegevens eronder niet kunt verwijderen, dan kunt u het aantal rijen dat de FILTER-functie retourneert beperken.

    Laten we eens kijken hoe het werkt op een voorbeeld van een eenvoudige formule die spelers uit de doelgroep in F1 trekt:

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

    De bovenstaande formule voert alle gevonden records uit, 4 rijen in ons geval. Maar stel dat u slechts ruimte hebt voor twee. Om alleen de eerste 2 gevonden rijen uit te voeren, moet u het volgende doen:

    • Steek de FILTER-formule in de array argument van de INDEX-functie.
    • Voor de rij_nummer argument van INDEX, gebruik een verticale arrayconstante zoals {1;2}. Die bepaalt hoeveel rijen er moeten worden teruggegeven (2 in ons geval).
    • Voor de kolom_nummer argument, gebruik een horizontale arrayconstante zoals {1,2,3}. Deze specificeert welke kolommen moeten worden geretourneerd (de eerste 3 kolommen in dit voorbeeld).
    • Om mogelijke fouten op te vangen wanneer geen gegevens worden gevonden die aan uw criteria voldoen, kunt u uw formule omwikkelen met de IFERROR-functie.

    De volledige formule heeft deze vorm:

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

    Wanneer u met grote tabellen werkt, kan het handmatig schrijven van arrayconstanten nogal omslachtig zijn. Geen probleem, de SEQUENCE-functie kan de opeenvolgende nummers automatisch voor u genereren:

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

    De eerste SEQUENCE genereert een verticale matrix met evenveel opeenvolgende nummers als gespecificeerd in het eerste (en enige) argument. De tweede SEQUENCE gebruikt de functie COLUMNS om het aantal kolommen in de dataset te tellen en produceert een equivalente horizontale matrix.

    Tip. Om gegevens van specifieke kolommen , niet alle kolommen, in de horizontale matrixconstante die u gebruikt voor de kolom_nummer argument van INDEX, alleen die specifieke getallen opnemen. Bijvoorbeeld, om gegevens uit de 1e en 3e kolom te halen, gebruikt u {1,3}.

    Excel FILTER functie werkt niet

    In de situatie waarin uw Excel FILTER-formule een fout oplevert, is dat waarschijnlijk een van de volgende:

    #CALC! fout

    Treedt op als de optionele if_empty argument is weggelaten, en er worden geen resultaten gevonden die aan de criteria voldoen. De reden hiervoor is dat Excel momenteel geen lege arrays ondersteunt. Om dergelijke fouten te voorkomen, moet u altijd de if_empty waarde in uw formules.

    #VALUE error

    Treedt op wanneer de array en omvatten argument hebben onverenigbare dimensies.

    #N/A, #VALUE, etc.

    Er kunnen verschillende fouten optreden als een waarde in de omvatten argument een fout is of niet kan worden omgezet in een Booleaanse waarde.

    #NAME fout

    Komt voor wanneer u probeert FILTER te gebruiken in een oudere versie van Excel. Vergeet niet dat het een nieuwe functie is, die alleen beschikbaar is in Office 365 en Excel 2021.

    In nieuw Excel treedt een #NAME-fout op als u per ongeluk de naam van de functie verkeerd spelt.

    #SPILL error

    Meestal treedt deze fout op als een of meer cellen in het morsbereik niet volledig leeg zijn. Om dit op te lossen, hoeft u alleen maar niet-lege cellen te wissen of te verwijderen. Om andere gevallen te onderzoeken en op te lossen, raadpleegt u #SPILL! fout in Excel: wat het betekent en hoe het op te lossen.

    #REF! fout

    Treedt op wanneer een FILTER-formule wordt gebruikt tussen verschillende werkmappen, en de bronwerkmap wordt gesloten.

    Dat is hoe u gegevens dynamisch in Excel kunt opslaan. Ik dank u voor het lezen en hoop u volgende week op onze blog te zien!

    Download praktijk werkboek

    Filteren in Excel met formules (.xlsx-bestand)

    Michael Brown is een toegewijde technologieliefhebber met een passie voor het vereenvoudigen van complexe processen met behulp van softwaretools. Met meer dan tien jaar ervaring in de technische industrie heeft hij zijn vaardigheden in Microsoft Excel en Outlook, evenals Google Spreadsheets en Documenten aangescherpt. Michael's blog is gewijd aan het delen van zijn kennis en expertise met anderen, met eenvoudig te volgen tips en tutorials voor het verbeteren van de productiviteit en efficiëntie. Of je nu een doorgewinterde professional of een beginner bent, Michaels blog biedt waardevolle inzichten en praktisch advies om het meeste uit deze essentiële softwaretools te halen.