
Sammendrag
For å filtrere og trekke ut data basert på flere komplekse kriterier, kan du bruke FILTER-funksjonen med en kjede av uttrykk som bruker boolsk logikk. I eksemplet vist er formelen i G5:
=FILTER(B5:E16,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4))
Denne formelen returnerer data der:
kontoen begynner med "x" OG regionen er "øst", og måneden er IKKE april.
Forklaring
I dette eksemplet må vi konstruere logikk som filtrerer data for å inkludere:
kontoen begynner med "x" OG regionen er "øst", og måneden er IKKE april.
Filtreringslogikken til denne formelen (inkluderingsargumentet) opprettes ved å koble sammen tre uttrykk som bruker boolsk logikk på matriser i dataene. Det første uttrykket bruker VENSTRE-funksjonen for å teste om Konto begynner med "x":
LEFT(B5:B16)="x" // account begins with "x"
Resultatet er en rekke SANNE FALSE verdier som dette:
(TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE)
Det andre uttrykket tester om Region er "øst" med operatoren lik (=):
C5:C16="east" // region is east
Resultatet er en annen matrise:
(FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;TRUE)
Det tredje uttrykket bruker MÅNED-funksjonen med IKKE-funksjonen for å teste om måneden ikke er april:
NOT(MONTH(D5:D16)=4) // month is not april
som gir:
(FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE)
Merk at NOT-funksjonen reverserer resultatet fra MONTH-uttrykket.
Alle tre matriser multipliseres sammen. Matematikkoperasjonen tvinger de SANNE og FALSE verdiene til 1s og 0s, så på dette punktet kan vi visualisere inkluderingsargumentet slik:
(1;0;1;1;1;0;0;0;1;1;0;1)* (0;0;1;1;1;0;1;0;0;1;0;1)* (0;0;0;1;1;1;1;1;1;1;1;1)
Boolsk multiplikasjon tilsvarer den logiske funksjonen OG, så det endelige resultatet er en enkelt matrise som dette:
(0;0;0;1;1;0;0;0;0;1;0;1)
FILTER-funksjonen bruker denne matrisen til å filtrere dataene, og returnerer de fire radene som tilsvarer 1-ene i matrisen.
Utvide kriterier
Uttrykkene som brukes til å lage inkludere-argumentet i filteret kan utvides etter behov for å håndtere enda mer komplekse filtre. For eksempel, for å ytterligere filtrere data slik at de bare inkluderer rader der beløpet er> 10000, kan du bruke en formel som denne:
=FILTER(B5:E16,(LEFT(B5:B16)="x")*(C5:C16="east")*NOT(MONTH(D5:D16)=4)*(E5:E16>10000))