Ale chociaż FILTER jest częściej używany do filtrowania wierszy, można również filtrować kolumny, sztuczka polega na dostarczeniu tablicy z taką samą liczbą kolumn jak dane źródłowe. W tym przykładzie, skonstruujemy tablicę, której potrzebujemy za pomocą logiki booleańskiej, zwanej również algebrą booleańską.
W algebrze booleańskiej, mnożenie odpowiada logice AND, a dodawanie logice OR. W pokazanym przykładzie, używamy algebry Boole’a z logiką OR (dodawanie), aby skierować się tylko do kolumn A, C i E w następujący sposób:
(B4:G4="a")+(B4:G4="c")+(B4:G4="e")Po obliczeniu każdego wyrażenia, mamy trzy tablice wartości TRUE/FALSE:
{TRUE,FALSE,FALSE,FALSE,FALSE,FALSE}+{FALSE,FALSE,TRUE,FALSE,FALSE,FALSE}+{FALSE,FALSE,FALSE,FALSE,TRUE,FALSE}Operacja matematyczna (dodawanie) konwertuje wartości TRUE i FALSE na 1s i 0s, więc możesz myśleć o tej operacji w ten sposób:
{1,0,0,0,0,0}+{0,0,1,0,0,0}+{0,0,0,0,1,0}W końcu mamy pojedynczą poziomą tablicę 1s i 0s:
{1,0,1,0,1,0}która jest dostarczana bezpośrednio do funkcji FILTER jako argument include:
=FILTER(B5:G12,{1,0,1,0,1,0})Zauważ, że jest 6 kolumn w danych źródłowych i 6 wartości w tablicy, wszystkie albo 1 albo 0. FILTER wykorzystuje tę tablicę jako filtr, aby uwzględnić tylko kolumny 1, 3 i 5 z danych źródłowych. Kolumny 2, 4 i 6 są usuwane. Innymi słowy, jedyne kolumny, które przetrwały, są związane z 1s.
Z użyciem funkcji MATCH
Zastosowanie logiki OR z dodawaniem, jak pokazano powyżej, działa dobrze, ale nie skaluje się dobrze i uniemożliwia użycie zakresu wartości z arkusza jako kryteriów. Alternatywnie, można użyć funkcji MATCH wraz z funkcją ISNUMBER w taki sposób, aby skonstruować argument include bardziej efektywnie:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,{"a","c","e"},0)))Funkcja MATCH jest skonfigurowana tak, aby szukać wszystkich nagłówków kolumn w stałej tablicy {„a”, „c”, „e”}, jak pokazano na rysunku. Robimy to w ten sposób, aby wynik z funkcji MATCH miał wymiary zgodne z danymi źródłowymi, które zawierają 6 kolumn. Zauważ również, że trzeci argument w MATCH jest ustawiony na zero, aby wymusić dokładne dopasowanie.
Po uruchomieniu MATCH, zwraca on tablicę jak poniżej:
{1,#N/A,2,#N/A,3,#N/A}Ta tablica trafia bezpośrednio do ISNUMBER, który zwraca kolejną tablicę:
{TRUE,FALSE,TRUE,FALSE,TRUE,FALSE}Tak jak powyżej, ta tablica jest pozioma i zawiera 6 wartości oddzielonych przecinkami. FILTER używa tej tablicy do usunięcia kolumn 2, 4 i 6.
Z zakresem
Ponieważ nagłówki kolumn znajdują się już w arkuszu w zakresie I4:K4, powyższa formuła może być łatwo dostosowana do bezpośredniego użycia zakresu w ten sposób:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,I4:K4,0)))Zakres I4:K4 jest oceniany jako {„a”, „c”, „e”} i zachowuje się tak samo jak stała tablicowa w powyższej formule.