
Obecný vzorec
=SUMPRODUCT((WEEKDAY(dates)=day_num)*values)
souhrn
Chcete-li sčítat data podle pracovního dne (tj. Součet podle pondělí, úterý, středy atd.), Můžete použít funkci SUMPRODUCT společně s funkcí WEEKDAY.
V zobrazeném příkladu je vzorec v H4:
=SUMPRODUCT((WEEKDAY(dates,2)=G4)*amts)
Vysvětlení
Možná se divíte, proč nepoužíváme funkci SUMIF nebo SUMIFS? Zdá se, že je to zřejmý způsob, jak to shrnout podle dnů v týdnu. Bez přidání pomocného sloupce s hodnotou dne v týdnu však neexistuje způsob, jak vytvořit kritéria pro SUMIF, která zohledňují den v týdnu.
Místo toho používáme praktickou funkci SUMPRODUCT, která elegantně zpracovává pole bez nutnosti používat Control + Shift + Enter.
Používáme SUMPRODUCT pouze s jedním argumentem, který se skládá z tohoto výrazu:
(WEEKDAY(dates,2)=G4)*amts
Při práci zevnitř ven je funkce WEEKDAY konfigurována s volitelným argumentem 2, který způsobí, že bude vracet čísla 1-7 pro dny od pondělí do neděle. To není nutné, ale usnadňuje to seznam dnů a pořadí čísel ve sloupci G v pořadí.
WEEKDAY vyhodnotí každou hodnotu v pojmenovaném rozsahu „dates“ a vrátí číslo. Výsledkem je pole jako toto:
(3; 5; 3; 1; 2; 2; 4; 2)
Čísla vrácená WEEKDAY jsou poté porovnána s hodnotou v G4, což je 1.
(3; 5; 3; 1; 2; 2; 4; 2) = 1
Výsledkem je pole TRUE / FALSE hodnot.
(FALSE; FALSE; FALSE; TRUE; FALSE; FALSE; FALSE; FALSE)
Dále je toto pole vynásobeno hodnotami v pojmenovaném rozsahu „amts“. SUMPRODUCT funguje pouze s čísly (ne textovými nebo booleovskými), ale matematické operace automaticky vynucují hodnoty TRUE / FALSE na něčí a nuly, takže máme:
(0; 0; 0; 1; 0; 0; 0; 0) * (100; 250; 75; 275; 250; 100; 300; 125)
Které výnosy:
(0; 0; 0; 275; 0; 0; 0; 0)
Pouze s tímto jediným polem ke zpracování SUMPRODUCT sečte položky a vrátí výsledek.