Excel formula: Broji dan u tjednu između datuma -

Sadržaj

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.

Zanimljivi članci...