
Formuła ogólna
=SUMPRODUCT((holidays>=start)*(holidays<=end))
Podsumowanie
Aby policzyć dni wolne, które przypadają między dwiema datami, można użyć funkcji SUMA PROCEDURY.
W pokazanym przykładzie formuła w F8 to:
=SUMPRODUCT((B4:B12>=F5)*(B4:B12<=F6))
Wyjaśnienie
Ta formuła używa dwóch wyrażeń w jednej tablicy wewnątrz funkcji SUMPRODUCT.
Pierwsze wyrażenie sprawdza każdą datę świąteczną, aby sprawdzić, czy jest ona większa lub równa dacie rozpoczęcia w F5:
(B4:B12>=F5)
Zwraca tablicę wartości PRAWDA / FAŁSZ w następujący sposób:
(FALSE; FALSE; FALSE; FALSE; TRUE; TRUE; TRUE; TRUE; TRUE)
Drugie wyrażenie sprawdza każdą datę świąteczną, aby sprawdzić, czy jest ona mniejsza lub równa dacie końcowej w F6:
(B4:B12<=F6)
która zwraca tablicę wartości PRAWDA / FAŁSZ w następujący sposób:
(TRUE; TRUE; TRUE; TRUE; TRUE; TRUE; TRUE; TRUE; FALSE)
Mnożenie tych dwóch tablic automatycznie zamienia wartości PRAWDA / FAŁSZ na jedynki i zera, w wyniku czego powstają tablice, które wyglądają następująco:
=SUMPRODUCT(((0;0;0;0;1;1;1;1;1))*((1;1;1;1;1;1;1;1;0)))
Po pomnożeniu mamy tylko jedną tablicę taką:
=SUMPRODUCT((0;0;0;0;1;1;1;1;0))
Na koniec SUMPRODUCT sumuje elementy w tablicy i zwraca 4.
Święta tylko w dni powszednie
Aby policzyć święta występujące tylko w dni powszednie (od poniedziałku do piątku), możesz rozszerzyć wzór w następujący sposób:
=SUMPRODUCT((rng>=F5)*(rng<=F6)*(WEEKDAY(rng,2)<6))
gdzie rng to zakres zawierający daty wakacji.