
Yleinen kaava
=SUMPRODUCT(--(WEEKDAY(dates)=day_num))
Yhteenveto
Voit laskea päivämäärät arkipäivittäin (eli laskea maanantaisin, tiistaisin, keskiviikkoisin jne.) Käyttämällä SUMPRODUCT-toimintoa yhdessä WEEKDAY-toiminnon kanssa. Esitetyssä esimerkissä F4: n kaava on:
=SUMPRODUCT(--(WEEKDAY(dates,2)=E4))
Huomaa: "päivämäärät" on nimetty alue B4: B15.
Selitys
Saatat ihmetellä, miksi emme käytä COUNTIF- tai COUNTIF-tunnuksia? Nämä toiminnot vaikuttavat ilmeiseltä ratkaisulta. Ei kuitenkaan ole mitään tapaa luoda ehtoja COUNTIF: lle viikonpäivien laskemiseksi tietyllä aikavälillä lisäämättä avustajasaraketta, joka sisältää viikonpäivän arvon.
Sen sijaan käytämme monipuolista SUMPRODUCT-toimintoa, joka käsittelee taulukoita sulavasti ilman, että tarvitsee käyttää Control + Vaihto + Enter.
Käytämme SUMPRODUCTia vain yhdellä argumentilla, joka koostuu tästä lausekkeesta:
--(WEEKDAY(dates,2)=E4)
Työskentely sisältä ulospäin, WEEKDAY-toiminto on määritetty valinnaisella argumentilla 2, joka saa sen palauttamaan numerot 1-7 vastaavasti maanantaista sunnuntaihin. Tämä helpottaa päivien luetteloa järjestyksessä sarakkeen E numeroilla peräkkäin.
WEEKDAY arvioi sitten jokaisen päivämäärän nimellisellä alueella "päivämäärät" ja palauttaa luvun. Tuloksena on tällainen taulukko:
(1;3;7;1;5;2;7;1;7;5;4;7)
WEEKDAYn palauttamia numeroita verrataan sitten E4: n arvoon, joka on 1:
(1;3;7;1;5;2;7;1;7;5;4;7)=1
Tuloksena on joukko TOSI / EPÄTOSI arvoja.
(TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE)
SUMPRODUCT toimii vain numeroiden (ei teksti- tai boolean-numeroiden) kanssa, joten käytämme kaksois-negatiivista TOSI / EPÄTOSI-arvojen pakottamiseen yhteen ja nolliin:
(1;0;0;1;0;0;0;1;0;0;0;0)
Yhdellä prosessoitavalla taulukolla SUMPRODUCT summaa kohteet ja palauttaa tuloksen 3.
Tyhjien päivämäärien käsittely
Jos päivämääräluettelossa on tyhjiä soluja, saat virheellisiä tuloksia, koska WEEKDAY-toiminto palauttaa tuloksen silloinkin, kun päivämäärää ei ole. Tyhjien solujen käsittelemiseksi voit säätää kaavaa seuraavasti:
=SUMPRODUCT((WEEKDAY(dates,2)=E4)*(dates""))
Kertominen lausekkeella (päivämäärät "") on yksi tapa peruuttaa tyhjät solut.