
Formuła ogólna
=FILTER(data,(dates>=A1)*(dates<=A2),"No data")
Podsumowanie
Aby filtrować dane w celu uwzględnienia rekordów między dwiema datami, można użyć funkcji FILTER z logiką boolowską. W pokazanym przykładzie formuła w F8 to:
=FILTER(B5:D15,(C5:C15>=F5)*(C5:C15<=G5),"No data")
Który zwraca rekordy z datami między 15 stycznia a 15 marca włącznie.
Wyjaśnienie
Ta formuła korzysta z funkcji FILTER w celu pobierania danych na podstawie testu logicznego utworzonego za pomocą wyrażenia logicznego boolowskiego. Argument tablicowy jest dostarczany jako B5: D15, który zawiera pełny zestaw danych bez nagłówków. To argument opiera się na dwóch porównań logicznych:
(C5:C15>=F5)*(C5:C15<=G5)
Wyrażenie po lewej stronie sprawdza, czy daty są większe lub równe dacie „Od” w F5. To jest przykład logiki boolowskiej. Wyrażenie po prawej stronie sprawdza, czy daty są mniejsze lub równe dacie „Do” w G5. Te dwa wyrażenia są połączone operatorem mnożenia, który tworzy relację AND.
Po obliczeniu wyrażeń logicznych otrzymujemy:
((TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE))* ((TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE))
Należy zauważyć, że w każdym zestawie nawiasów znajduje się jedenaście wyników, po jednym dla każdej daty w danych. Operacja mnożenia przekształca wartości TRUE FALSE na 1 i 0, więc ostatecznym wynikiem jest pojedyncza tablica, taka jak ta:
(1;1;1;1;0;0;0;0;0;0;0)
Zwróć uwagę, że cztery jedynki w tablicy odpowiadają czterem datom, które przeszły test. Ta tablica jest dostarczana do funkcji FILTER i używana do filtrowania danych. Tylko wiersze, w których wynikiem jest 1, trafiają do ostatecznego wyniku.
Argument „if_empty” jest ustawiony na „Brak danych” w przypadku, gdy nie zostaną znalezione żadne pasujące dane.