
Yleinen kaava
=SUMPRODUCT((holidays>=start)*(holidays<=end))
Yhteenveto
Voit laskea kahden päivämäärän välillä olevat lomapäivät SUMPRODUCT-funktiolla.
Esitetyssä esimerkissä kaava kohdassa F8 on:
=SUMPRODUCT((B4:B12>=F5)*(B4:B12<=F6))
Selitys
Tämä kaava käyttää kahta lauseketta yhdessä taulukossa SUMPRODUCT-funktion sisällä.
Ensimmäinen lauseke testaa jokaisen lomapäivän sen selvittämiseksi, onko se suurempi tai yhtä suuri kuin F5: n aloituspäivä:
(B4:B12>=F5)
Tämä palauttaa taulukon TOSI / EPÄTOSI arvoja:
(EPÄTOSI; EPÄTOSI; EPÄTOSI; EPÄTOSI; TOSI; TOSI; TOSI; TOSI; TOSI)
Toinen lauseke testaa jokaisen lomapäivän ja tarkistaa, onko se pienempi tai yhtä suuri kuin F6: n lopetuspäivä:
(B4:B12<=F6)
joka palauttaa taulukon TOSI / EPÄTOSI arvoja seuraavasti:
(TOSI; TOSI; TOSI; TOSI; TOSI; TOSI; TOSI; TOSI; TOSI)
Näiden kahden matriisin kertominen pakottaa TOSI / EPÄTOSI-arvot automaattisesti yksiköiksi ja nolliksi, jolloin saadaan seuraavanlaiset taulukot:
=SUMPRODUCT(((0;0;0;0;1;1;1;1;1))*((1;1;1;1;1;1;1;1;0)))
Kertomisen jälkeen meillä on vain yksi tällainen taulukko:
=SUMPRODUCT((0;0;0;0;1;1;1;1;0))
Lopuksi SUMPRODUCT summaa matriisin kohteet ja palauttaa arvon 4.
Lomat vain arkisin
Jos haluat laskea vain arkipäivinä (ma-pe) tapahtuvat lomapäivät, voit laajentaa kaavaa seuraavasti:
=SUMPRODUCT((rng>=F5)*(rng<=F6)*(WEEKDAY(rng,2)<6))
missä rng on alue, joka sisältää lomapäivät.