
Splošna formula
=SUMPRODUCT((WEEKDAY(dates)=day_num)*values)
Povzetek
Če želite podatke seštevati po delovnih dneh (tj. Vsote po ponedeljkih, torkih, sredah itd.), Lahko uporabite funkcijo SUMPRODUCT skupaj s funkcijo WEEKDAY.
V prikazanem primeru je formula v H4:
=SUMPRODUCT((WEEKDAY(dates,2)=G4)*amts)
Pojasnilo
Morda se sprašujete, zakaj ne uporabljamo funkcije SUMIF ali SUMIFS? Zdi se, da je to očiten način seštevanja po dnevih v tednu. Vendar brez dodajanja pomožnega stolpca z vrednostjo v delovnem dnevu ni mogoče ustvariti meril za SUMIF, ki upoštevajo delovni dan.
Namesto tega uporabimo priročno funkcijo SUMPRODUCT, ki elegantno obdeluje polja, ne da bi morali uporabljati Control + Shift + Enter.
SUMPRODUCT uporabljamo z enim samim argumentom, ki je sestavljen iz tega izraza:
(WEEKDAY(dates,2)=G4)*amts
Funkcija WEEKDAY, ki deluje od znotraj navzven, je konfigurirana z neobveznim argumentom 2, zaradi česar vrne številke 1-7 za dneve od ponedeljka do nedelje. To ni potrebno, vendar olajša seznam dni po vrsti in zaporedje pobiranja številk v stolpcu G.
WEEKDAY izračuna vsako vrednost v imenovanem obsegu "datumi" in vrne številko. Rezultat je matrika, kot je ta:
(3; 5; 3; 1; 2; 2; 4; 2)
Številke, ki jih vrne WEEKDAY, se nato primerjajo z vrednostjo v G4, ki je 1.
(3; 5; 3; 1; 2; 2; 4; 2) = 1
Rezultat je niz TRUE / FALSE vrednosti.
(FALSE; FALSE; FALSE; TRUE; FALSE; FALSE; FALSE; FALSE)
Nato se ta matrika pomnoži z vrednostmi v imenovanem obsegu "amts". SUMPRODUCT deluje samo s števili (ne z besedilom ali logičnimi vrednostmi), vendar matematične operacije samodejno prisilijo vrednosti TRUE / FALSE na eno in ničle, zato imamo:
(0; 0; 0; 1; 0; 0; 0; 0) * (100; 250; 75; 275; 250; 100; 300; 125)
Kar prinaša:
(0; 0; 0; 275; 0; 0; 0; 0)
S samo to eno matriko, ki jo je treba obdelati, SUMPRODUCT sešteje elemente in vrne rezultat.