Mestre FILTRER-funksjonen i Excel

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.


Legg igjen en kommentar

Du må være logg inn for å kommentere.

Flere blogginnlegg

Lei av å google?
Abboner på vårt nyhetsbrev og få de beste Excel-tipsene hver uke.

Om skribenten

Emil har jobbet på Learnesy som produktutvikler i flere år og står bak flere av Learnesys kurs. Han har en utdannelse innen datavitenskap med stor interesse for det analytiske og teoretiske. I tillegg til finsk og svensk snakker Emil også flytende Excel-funksjoner!