
Generisk formel
=FILTER(data,(header="a")+(header="b"))
Sammanfattning
För att filtrera kolumner, ange en horisontell matris för inkluderingsargumentet. I exemplet som visas är formeln i I5:
=FILTER(B5:G12,(B4:G4="a")+(B4:G4="c")+(B4:G4="e"))
Resultatet är en filtrerad uppsättning data som endast innehåller kolumnerna A, C och E från källdata.
Förklaring
Även om FILTER vanligtvis används för att filtrera rader kan du också filtrera kolumner, men tricket är att förse en matris med samma antal kolumner som källdata. I det här exemplet konstruerar vi den array vi behöver med boolesk logik, även kallad boolesk algebra.
I boolesk algebra motsvarar multiplikation AND-logik och addition motsvarar OR-logik. I exemplet som visas använder vi boolesk algebra med ELLER-logik (tillägg) för att bara rikta in kolumnerna A, C och E så här:
(B4:G4="a")+(B4:G4="c")+(B4:G4="e")
Efter att varje uttryck har utvärderats har vi tre matriser med SANT / FALSKA värden:
(TRUE,FALSE,FALSE,FALSE,FALSE,FALSE)+ (FALSE,FALSE,TRUE,FALSE,FALSE,FALSE)+ (FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)
Räkneoperationen (tillägg) omvandlar SANT och FALSKT till 1s och 0s, så du kan tänka på operationen så här:
(1,0,0,0,0,0)+ (0,0,1,0,0,0)+ (0,0,0,0,1,0)
I slutändan har vi en enda horisontell grupp av 1s och 0s:
(1,0,1,0,1,0)
som levereras direkt till FILTER-funktionen som inkluderingsargument:
=FILTER(B5:G12,(1,0,1,0,1,0))
Observera att det finns 6 kolumner i källdata och 6 värden i matrisen, alla antingen 1 eller 0. FILTER använder denna matris som ett filter för att endast inkludera kolumner 1, 3 och 5 från källdata. Kolumnerna 2, 4 och 6 tas bort. Med andra ord är de enda kolumnerna som överlever associerade med 1s.
Med MATCH-funktionen
Att tillämpa ELLER-logik med tillägg som visas ovan fungerar bra, men det skalas inte bra och gör det omöjligt att använda ett värdeintervall från ett kalkylblad som kriterier. Som ett alternativ kan du använda MATCH-funktionen tillsammans med ISNUMBER-funktionen så här för att konstruera inkluderingsargumentet mer effektivt:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,("a","c","e"),0)))
MATCH-funktionen är konfigurerad för att leta efter alla kolumnrubriker i arraykonstanten ("a", "c", "e") som visas. Vi gör det så att resultatet från MATCH har dimensioner som är kompatibla med källdata, som innehåller 6 kolumner. Lägg också märke till att det tredje argumentet i MATCH är satt till noll för att tvinga en exakt matchning.
Efter att MATCH har körts returnerar den en sådan matris:
(1,#N/A,2,#N/A,3,#N/A)
Denna matris går direkt till ISNUMBER, som returnerar en annan matris:
(TRUE,FALSE,TRUE,FALSE,TRUE,FALSE)
Som ovan är denna matris horisontell och innehåller 6 värden åtskilda av kommatecken. FILTER använder matrisen för att ta bort kolumnerna 2, 4 och 6.
Med ett sortiment
Eftersom kolumnrubrikerna redan finns på kalkylbladet i intervallet I4: K4 kan formeln ovan enkelt anpassas för att använda intervallet direkt så här:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,I4:K4,0)))
Området I4: K4 utvärderas som ("a", "c", "e") och beter sig precis som arraykonstanten i formeln ovan.