Hoewel FILTER vaker wordt gebruikt om rijen te filteren, kunt u ook kolommen filteren, de truc is om een array aan te leveren met hetzelfde aantal kolommen als de brongegevens. In dit voorbeeld construeren we de array die we nodig hebben met booleaanse logica, ook wel Booleaanse algebra genoemd.
In Booleaanse algebra komt vermenigvuldigen overeen met AND-logica, en optellen met OR-logica. In het getoonde voorbeeld gebruiken we Booleaanse algebra met OR-logica (optellen) om alleen de kolommen A, C en E als volgt te bewerken:
(B4:G4="a")+(B4:G4="c")+(B4:G4="e")Nadat elke expressie is geëvalueerd, hebben we drie matrices met TRUE/FALSE-waarden:
{TRUE,FALSE,FALSE,FALSE,FALSE,FALSE}+{FALSE,FALSE,TRUE,FALSE,FALSE,FALSE}+{FALSE,FALSE,FALSE,FALSE,TRUE,FALSE}De wiskundige bewerking (optelling) zet de TRUE en FALSE waarden om in 1-en en 0-en, zodat je de bewerking als volgt kunt zien:
{1,0,0,0,0,0}+{0,0,1,0,0,0}+{0,0,0,0,1,0}Eindelijk hebben we één horizontale matrix van 1’s en 0’s:
{1,0,1,0,1,0}die rechtstreeks aan de FILTER-functie wordt geleverd als het include-argument:
=FILTER(B5:G12,{1,0,1,0,1,0})Merk op dat er 6 kolommen in de brongegevens staan en 6 waarden in de array, allemaal 1 of 0. FILTER gebruikt deze matrix als filter om alleen de kolommen 1, 3 en 5 uit de brongegevens op te nemen. De kolommen 2, 4 en 6 worden verwijderd. Met andere woorden, de enige kolommen die overleven worden geassocieerd met 1s.
Met de MATCH functie
Het toepassen van OR logica met optelling zoals hierboven getoond werkt prima, maar het schaalt niet goed, en maakt het onmogelijk om een reeks waarden uit een werkblad als criteria te gebruiken. Als alternatief kunt u de MATCH-functie samen met de ISNUMBER-functie als volgt gebruiken om het include-argument efficiënter te construeren:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,{"a","c","e"},0)))De MATCH-functie is geconfigureerd om te zoeken naar alle kolomkoppen in de array constante {“a”, “c”, “e”}, zoals weergegeven. We doen het op deze manier zodat het resultaat van MATCH afmetingen heeft die compatibel zijn met de brongegevens, die 6 kolommen bevatten. Merk ook op dat het derde argument in MATCH op nul is gezet om een exacte overeenkomst te forceren.
Nadat MATCH is uitgevoerd, wordt een array als deze geretourneerd:
{1,#N/A,2,#N/A,3,#N/A}Deze array gaat rechtstreeks naar ISNUMBER, dat een andere array retourneert:
{TRUE,FALSE,TRUE,FALSE,TRUE,FALSE}Zoals hierboven, is deze array horizontaal en bevat 6 waarden, gescheiden door komma’s. FILTER gebruikt de array om de kolommen 2, 4 en 6 te verwijderen.
Met een bereik
Omdat de kolomkoppen al op het werkblad staan in het bereik I4:K4, kan de bovenstaande formule eenvoudig worden aangepast om het bereik rechtstreeks te gebruiken, zoals deze:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,I4:K4,0)))Het bereik I4:K4 wordt geëvalueerd als {“a”, “c”, “e”}, en gedraagt zich net als de matrixconstante in de bovenstaande formule.