Mestre FILTRER-funksjonen i Excel
FILTRER
FILTRER-funksjonen er uten tvil en av mine favorittfunksjoner i Excel. I sin enkleste form filtrerer funksjonen rader (eller verdier) i et datasett basert på et uttrykk vi skriver i formelen. Selv om vi i formelen kan angi et logisk uttrykk som brukes for filtrering, fungerer formelen faktisk med hvilken som helst sekvens av boolske verdier – forutsatt at den er like lang som datasettet. Denne fantastiske funksjonaliteten gjør det mulig for oss å basere filtreringen på mer avansert logikk, som vi snart skal se nærmere på.
Hent eksempelfilen: FILTRER
Syntax: FILTRER (matrise; inkluder; [hvis tom])
Her er et eksempel av funksjonen i sin enkleste form. Funksjonen filtrerer hele tabellen til venstre ved å inkludere alle oppføringer der verdien i kolonnen “Produkt” er lik “Skrivbord”.
Vi ser kort på hva som skjer under overflaten når funksjonen kjøres. Det logiske uttrykket i argumentet “inkluder” returnerer følgende matrise med verdier 1 eller 0 for hver rad – avhengig av om uttrykket er SANT eller USANT. Denne matrisen brukes deretter til å evaluere hvilke verdier som inkluderes fra den opprinnelige tabellen.
Inverter resultatene
For å forstå nytten av denne funksjonaliteten ser vi på følgende eksempel. Hva om vi ønsker å inkludere alle rader som IKKE oppfyller kravene?
Det vi trenger å gjøre er å invertere sekvensen
{1;0;1;0;0;1;1;0;0} til {0;1;0;1;1;0;0;1;1}
Dette kan gjøres ved å subtrahere 1 fra matrisen og deretter returnere absoluttverdien av tallet med ABS-funksjonen. Da blir 1 -> 0 og 0 -> 1.
Invertere: FILTRER (matrise ; ABS(( inkluder ) -1 ))
OG/ELLER med FILTRER
For å filtrere med OG/ELLER bruker vi en lignende logikk som i det forrige eksempelet. Siden Excels egne funksjoner for OG/ELLER ikke fungerer på matriser, må vi i stedet bruke matematiske operasjoner.
For OG brukes multiplikasjon, for ELLER brukes addisjon.
OG:FILTRER( matrise ; (inkluder) * (inkluder)) ELLER:Syntax: FILTRER( matrise ; (inkluder) + (inkluder))
Hvis vi for eksempel ønsker å filtrere alle rader mellom datoene 10/02/2022 og 02/02/2022, skriver vi to forskjellige uttrykk og multipliserer dem. Det vil si, vi inkluderer alle rader der datoen er større enn 10/02/2022 og mindre enn 02/02/2022.
[BILDE]
Men hvorfor bruker vi multiplikasjon og addisjon? Hvis vi har to ulike sammenligninger med ulike resultater og multipliserer dem, ser vi i tabellen nedenfor at svaret bare blir SANT hvis begge sammenligningene er sanne – ellers blir svaret FALSKT.
0 * 0 = 0
0 * 1 = 0
1 * 0 = 0
1 * 1 = 1
Samme logikk gjelder for addisjon:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 2 (også 2 tolkes som SANT i Excel)
Hvordan nå verdier i en filtrert tabell
FILTRER-funksjonen returnerer en dynamisk matrise som svar, noe som kan føre til problemer hvis vi ønsker å bearbeide tallene videre. Dette skjer ofte fordi funksjonen brukes til å evaluere hvilke verdier/rader som skal inkluderes, for eksempel i en beregning. En måte å håndtere dette på er å filtrere bare den kolonnen vi trenger i stedet for å returnere flere kolonner eller hele tabellen.
Hvis vi for eksempel i vårt datumeksempel ønsker å bruke en FINN.RAD-funksjon på produktene eller summere prisene, må vi dynamisk nå disse verdiene. Dette kan gjøres på flere måter, men den enkleste måten er sannsynligvis å inkorporere funksjonen i en INDEKS-funksjon.
Returner kolonnen fra filtrert tabell:INDEKS(FILTRER( matrise ; inkluder) ; 0 ; nr.kolonne))
Vi kan derfor summere alle verdiene i kolonnen “Pris” der bestillinger er gjort mellom våre valgte datoer ved hjelp av følgende formel:
En ulempe med FILTRER-funksjonen er at den er relativt treg og ressurskrevende når man jobber med store mengder data. Derfor anbefaler jeg alltid å bruke Excels innebygde funksjoner for for eksempel betingede beregninger eller sammenligninger, selv om det vanligvis er mulig å bygge opp en identisk funksjon med FILTRER.