
Generisk formel
=FILTER(data,(header="a")+(header="b"))
Resumé
For at filtrere kolonner skal du angive et vandret array til inkluderingsargumentet. I det viste eksempel er formlen i I5:
=FILTER(B5:G12,(B4:G4="a")+(B4:G4="c")+(B4:G4="e"))
Resultatet er et filtreret datasæt, der kun indeholder kolonner A, C og E fra kildedataene.
Forklaring
Selvom FILTER mere almindeligt bruges til at filtrere rækker, kan du også filtrere kolonner, tricket er at levere en matrix med det samme antal kolonner som kildedataene. I dette eksempel konstruerer vi den matrix, vi har brug for, med boolsk logik, også kaldet boolsk algebra.
I boolsk algebra svarer multiplikation til OG-logik, og tilføjelse svarer til ELLER-logik. I det viste eksempel bruger vi boolsk algebra med ELLER-logik (tilføjelse) til kun at målrette mod kolonnerne A, C og E således:
(B4:G4="a")+(B4:G4="c")+(B4:G4="e")
Når hvert udtryk er evalueret, har vi tre arrays med SANDE / FALSKE værdier:
(TRUE,FALSE,FALSE,FALSE,FALSE,FALSE)+ (FALSE,FALSE,TRUE,FALSE,FALSE,FALSE)+ (FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)
Matematikoperationen (tilføjelse) konverterer de SANDE og FALSKE værdier til 1s og 0s, så du kan tænke på operationen sådan:
(1,0,0,0,0,0)+ (0,0,1,0,0,0)+ (0,0,0,0,1,0)
I sidste ende har vi et enkelt vandret array på 1s og 0s:
(1,0,1,0,1,0)
som leveres direkte til FILTER-funktionen som argumentet inkluderer:
=FILTER(B5:G12,(1,0,1,0,1,0))
Bemærk, at der er 6 kolonner i kildedataene og 6 værdier i matrixen, alle enten 1 eller 0. FILTER bruger denne matrix som et filter til kun at inkludere kolonne 1, 3 og 5 fra kildedataene. Kolonne 2, 4 og 6 fjernes. Med andre ord er de eneste kolonner, der overlever, forbundet med 1'er.
Med MATCH-funktionen
Anvendelse ELLER logik med tilføjelse som vist ovenfor fungerer fint, men det skaleres ikke godt og gør det umuligt at bruge en række værdier fra et regneark som kriterier. Som et alternativ kan du bruge MATCH-funktionen sammen med ISNUMBER-funktionen på denne måde til at konstruere inkluderingsargumentet mere effektivt:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,("a","c","e"),0)))
MATCH-funktionen er konfigureret til at søge efter alle kolonneoverskrifter i arraykonstanten ("a", "c", "e") som vist. Vi gør det på denne måde, så resultatet fra MATCH har dimensioner, der er kompatible med kildedataene, som indeholder 6 kolonner. Bemærk også, at det tredje argument i MATCH er sat som nul for at tvinge et nøjagtigt match.
Når MATCH kører, returnerer den en matrix som denne:
(1,#N/A,2,#N/A,3,#N/A)
Denne matrix går direkte ind i ISNUMBER, som returnerer en anden matrix:
(TRUE,FALSE,TRUE,FALSE,TRUE,FALSE)
Som ovenfor er denne matrix vandret og indeholder 6 værdier adskilt af kommaer. FILTER bruger array til at fjerne kolonne 2, 4 og 6.
Med en rækkevidde
Da kolonneoverskrifterne allerede findes på regnearket i området I4: K4, kan formlen ovenfor let tilpasses til at bruge området direkte sådan:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,I4:K4,0)))
Området I4: K4 evalueres som ("a", "c", "e") og opfører sig ligesom arraykonstanten i formlen ovenfor.