
Vispārēja formula
=SUMPRODUCT(--(WEEKDAY(dates)=day_num))
Kopsavilkums
Lai skaitītu datumus pēc darba dienām (ti, pirmdienas, otrdienas, trešdienas utt.), Varat izmantot funkciju SUMPRODUCT kopā ar WEEKDAY funkciju. Parādītajā piemērā formula F4 ir:
=SUMPRODUCT(--(WEEKDAY(dates,2)=E4))
Piezīme: "datumi" ir nosauktais diapazons B4: B15.
Paskaidrojums
Jums varētu rasties jautājums, kāpēc mēs neizmantojam COUNTIF vai COUNTIF? Šīs funkcijas šķiet acīmredzams risinājums. Tomēr, nepievienojot palīga kolonnu, kurā ir nedēļas dienas vērtība, nevar izveidot kritēriju, lai COUNTIF uzskaitītu nedēļas dienas datumu diapazonā.
Tā vietā mēs izmantojam daudzpusīgo funkciju SUMPRODUCT, kas graciozi apstrādā masīvus, neizmantojot Control + Shift + Enter.
Mēs izmantojam SUMPRODUCT tikai ar vienu argumentu, kas sastāv no šī izteiciena:
--(WEEKDAY(dates,2)=E4)
Strādājot no iekšpuses, WEEKDAY funkcija ir konfigurēta ar izvēles argumentu 2, kas liek tai atgriezt skaitļus 1-7 attiecīgi no pirmdienas līdz svētdienai. Tas atvieglo dienu secības uzskaitīšanu pēc kārtas ar skaitļiem E slejā.
WEEKDAY pēc tam novērtē katru datumu nosauktajā diapazonā "datumi" un atgriež skaitli. Rezultāts ir šāds masīvs:
(1;3;7;1;5;2;7;1;7;5;4;7)
Pēc tam WEEKDAY atgrieztos skaitļus salīdzina ar vērtību E4, kas ir 1:
(1;3;7;1;5;2;7;1;7;5;4;7)=1
Rezultāts ir TRUE / FALSE vērtību masīvs.
(TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE)
SUMPRODUCT darbojas tikai ar cipariem (nevis ar tekstu vai boolean), tāpēc mēs izmantojam dubultnegatīvu, lai TRUE / FALSE vērtības piespiestu vienām un nullēm:
(1;0;0;1;0;0;0;1;0;0;0;0)
Apstrādājot vienu masīvu, SUMPRODUCT summē vienumus un atgriež rezultātu 3.
Nodarbošanās ar tukšiem datumiem
Ja datumu sarakstā ir tukšas šūnas, tiks iegūti nepareizi rezultāti, jo funkcija WEEKDAY atgriezīs rezultātu pat tad, ja datuma nav. Lai apstrādātu tukšas šūnas, formulu var pielāgot šādi:
=SUMPRODUCT((WEEKDAY(dates,2)=E4)*(dates""))
Reizināšana ar izteicienu (datumi "") ir viens veids, kā atcelt tukšās šūnas.