
Všeobecný vzorec
=SUMPRODUCT((WEEKDAY(dates)=day_num)*values)
Zhrnutie
Ak chcete sčítať údaje podľa pracovných dní (tj. Súčtov v pondelok, utorok, stredu atď.), Môžete použiť funkciu SUMPRODUCT spolu s funkciou WEEKDAY.
V zobrazenom príklade je vzorec v H4:
=SUMPRODUCT((WEEKDAY(dates,2)=G4)*amts)
Vysvetlenie
Možno by vás zaujímalo, prečo nepoužívame funkciu SUMIF alebo SUMIFS? Zdá sa, že je to zrejmý spôsob súčtu podľa dní v týždni. Bez pridania pomocného stĺpca s hodnotou v týždni však neexistuje spôsob, ako vytvoriť kritérium pre SUMIF, ktoré zohľadňuje všedný deň.
Namiesto toho použijeme šikovnú funkciu SUMPRODUCT, ktorá elegantne narába s poliami bez nutnosti používať Control + Shift + Enter.
SUMPRODUCT používame iba s jedným argumentom, ktorý sa skladá z tohto výrazu:
(WEEKDAY(dates,2)=G4)*amts
Pri práci zvnútra je funkcia WEEKDAY konfigurovaná s voliteľným argumentom 2, ktorý spôsobuje, že bude vracať čísla 1 - 7 pre dni pondelok - nedeľa. To nie je potrebné, ale uľahčuje to zoradenie dní a postupné vyberanie čísel v stĺpci G.
WEEKDAY vyhodnotí každú hodnotu v pomenovanom rozsahu „dates“ a vráti číslo. Výsledkom je pole ako je toto:
(3; 5; 3; 1; 2; 2; 4; 2)
Čísla vrátené do WEEKDAY sa potom porovnajú s hodnotou v G4, ktorá je 1.
(3; 5; 3; 1; 2; 2; 4; 2) = 1
Výsledkom je pole hodnôt TRUE / FALSE.
(FALSE; FALSE; FALSE; TRUE; FALSE; FALSE; FALSE; FALSE)
Ďalej sa toto pole vynásobí hodnotami v pomenovanom rozsahu „amts“. SUMPRODUCT funguje iba s číslami (nie textovými alebo boolovskými hodnotami), ale matematické operácie automaticky vynútia hodnoty TRUE / FALSE na jedničku a nuly, takže máme:
(0; 0; 0; 1; 0; 0; 0; 0) * (100; 250; 75; 275; 250; 100; 300; 125)
Ktoré výnosy:
(0; 0; 0; 275; 0; 0; 0; 0)
Iba s týmto jediným poľom na spracovanie SUMPRODUCT sčíta položky a vráti výsledok.