Excel-formule: FILTER met meerdere OF-criteria -

Inhoudsopgave

Samenvatting

Om gegevens met meerdere OF-voorwaarden te extraheren, kunt u de FILTER-functie samen met de MATCH-functie gebruiken. In het getoonde voorbeeld is de formule in F9:

=FILTER(B5:D16, ISNUMBER(MATCH(items,F5:F6,0))* ISNUMBER(MATCH(colors,G5:G6,0))* ISNUMBER(MATCH(cities,H5:H6,0)))

waarbij items (B3: B16), kleuren (C3: C16) en steden (D3: D16) benoemde bereiken zijn.

Deze formule retourneert gegevens waar het item is (t-shirts OF hoodie) EN de kleur is (rood OF blauw) EN de stad is (Denver OF Seattle).

Uitleg

In dit voorbeeld worden criteria ingevoerd in het bereik F5: H6. De logica van de formule is:

item is (t-shirt OF hoodie) EN kleur is (rood OF blauw) EN stad is (Denver OF Seattle)

De filterlogica van deze formule (het include-argument) wordt toegepast met de ISNUMBER- en MATCH-functies, samen met de booleaanse logica die wordt toegepast in een arraybewerking.

MATCH is "achterstevoren" geconfigureerd, met opzoekwaarden die uit de gegevens komen en criteria die worden gebruikt voor de opzoekmatrix. De eerste voorwaarde is bijvoorbeeld dat items een T-shirt of Hoodie moeten zijn. Om deze voorwaarde toe te passen, is MATCH als volgt opgezet:

MATCH(items,F5:F6,0) // check for tshirt or hoodie

Omdat er 12 waarden in de gegevens zitten, is het resultaat een array met 12 waarden zoals deze:

(1;#N/A;#N/A;2;#N/A;2;2;#N/A;1;#N/A;2;1)

Deze array bevat ofwel # N / A-fouten (geen overeenkomst) of getallen (overeenkomst). Kennisgevingsnummers komen overeen met items die T-shirt of Hoodie zijn. Om deze array in TRUE en FALSE waarden te converteren, is de MATCH-functie verpakt in de ISNUMBER-functie:

ISNUMBER(MATCH(items,F5:F6,0))

wat een array als deze oplevert:

(TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE)

In deze array komen de WAAR-waarden overeen met t-shirt of hoodie.

De volledige formule bevat drie uitdrukkingen zoals hierboven gebruikt voor het include-argument van de FILTER-functie:

ISNUMBER(MATCH(items,F5:F6,0))* // tshirt or hoodie ISNUMBER(MATCH(colors,G5:G6,0))* // red or blue ISNUMBER(MATCH(cities,H5:H6,0))) // denver or seattle

Nadat MATCH en ISNUMBER zijn geëvalueerd, hebben we drie arrays met TRUE en FALSE waarden. De wiskundige bewerking van het samen vermenigvuldigen van deze arrays dwingt de waarden TRUE en FALSE tot 1s en 0s, dus we kunnen de arrays op dit punt als volgt visualiseren:

(1;0;0;1;0;1;1;0;1;0;1;1)* (1;0;1;1;0;1;0;0;0;0;0;1)* (1;0;1;0;0;1;0;1;1;0;0;1)

Het resultaat, volgens de regels van de booleaanse rekenkunde, is een enkele array:

(1;0;0;0;0;1;0;0;0;0;0;1)

wat het include-argument wordt in de FILTER-functie:

=FILTER(B5:D16,(1;0;0;0;0;1;0;0;0;0;0;1))

Het uiteindelijke resultaat zijn de drie rijen met gegevens die worden weergegeven in F9: H11

Met hardgecodeerde waarden

Hoewel de formule in het voorbeeld criteria gebruikt die rechtstreeks in het werkblad zijn ingevoerd, kunnen criteria in plaats daarvan als volgt hard worden gecodeerd als matrixconstanten:

=FILTER(B5:D16, ISNUMBER(MATCH(items,("Tshirt";"Hoodie"),0))* ISNUMBER(MATCH(colors,("Red";"Blue"),0))* ISNUMBER(MATCH(cities,("Denver";"Seattle"),0)))

Interessante artikelen...