![](https://cdn.wiki-base.com/8221852/excel_formula_count_day_of_week_between_dates__2.png.webp)
Generička formula
=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(start&":"&end)))=dow))
Sažetak
Za brojanje radnih dana (ponedjeljkom, petkom, nedjeljom itd.) Između dva datuma možete upotrijebiti formulu niza koja koristi nekoliko funkcija: SUMPRODUCT, WEEKDAY, ROW i INDIRECT. U prikazanom primjeru formula u ćeliji E6 je
=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(B6&":"&C6)))=D6))
U generičkoj verziji formule početak = datum početka, kraj = datum završetka i dow = dan u tjednu.
Obrazloženje
U osnovi, ova formula koristi funkciju WEEKDAY za testiranje određenog broja datuma kako bi se utvrdilo slijeću li određenog dana u tjednu (dow) i funkciju SUMPRODUCT za zbrajanje ukupnog broja.
Kada dobijete datum, WEEKDAY jednostavno vraća broj između 1 i 7 koji odgovara određenom danu u tjednu. Sa zadanim postavkama, 1 = nedjelja i 7 = subota. Dakle, 2 = ponedjeljak, 6 = petak i tako dalje.
Trik ove formule je razumijevanje da su datumi u Excelu samo serijski brojevi koji počinju 1. siječnja 1900. Na primjer, 1. siječnja 2016. je serijski broj 42370, a 8. siječnja 42377. Datumi u Excelu izgledaju samo kao datumi kada primijenjen je format broja datuma.
Dakle, postavlja se pitanje - kako možete konstruirati niz datuma koje možete unijeti u funkciju WEEKDAY da biste saznali odgovarajuće dane u tjednu?
Odgovor je koristiti RED s INDIRECT funkcijama na sljedeći način:
ROW(INDIRECT(date1&":"&date2))
INDIRECT omogućuje da se spojeni datumi "42370: 42377" tumače kao brojevi redaka. Tada funkcija ROW vraća niz poput ovog:
(42370;42371;42372;42373;42374;42375;42376;42377)
Funkcija WEEKDAY procjenjuje ove brojeve kao datume i vraća ovaj niz:
(6;7;1;2;3;4;5;6)
koja se testira prema danu u tjednu (6, u ovom slučaju, iz D6). Nakon što se rezultati testa pretvore u 1 i 0 s dvostrukom crticom, ovaj niz obrađuje SUMPRODUCT:
(1;0;0;0;0;0;0;1)
Koji vraća 2.
S SEKVENCOM
S novom funkcijom SEQUENCE, ova se formula može pojednostaviti na sljedeći način:
=SUMPRODUCT(--(WEEKDAY(SEQUENCE(end-start+1,1,start,1))=dow))
U ovoj verziji koristimo SEQUENCE za izravno generiranje niza datuma, bez potrebe za INDIRECT ili ROW.