
Загальна формула
=SUMPRODUCT((WEEKDAY(dates)=day_num)*values)
Резюме
Щоб підсумувати дані за робочим днем (тобто підсумком за понеділками, вівторками, середами тощо), ви можете використовувати функцію SUMPRODUCT разом із функцією WEEKDAY.
У наведеному прикладі формула в H4 така:
=SUMPRODUCT((WEEKDAY(dates,2)=G4)*amts)
Пояснення
Ви можете запитати, чому ми не використовуємо функцію SUMIF або SUMIFS? Це видається очевидним способом підсумовування за днями тижня. Однак без додавання допоміжного стовпця зі значенням дня тижня неможливо створити критерії для SUMIF, що враховують день тижня.
Натомість ми використовуємо зручну функцію SUMPRODUCT, яка витончено обробляє масиви без необхідності використовувати Control + Shift + Enter.
Ми використовуємо SUMPRODUCT лише з одним аргументом, який складається з цього виразу:
(WEEKDAY(dates,2)=G4)*amts
Працюючи зсередини, функція WEEKDAY налаштована з необов’язковим аргументом 2, що змушує її повертати числа 1-7 для днів понеділок-неділя відповідно. Це не обов'язково, але це полегшує перелік днів по порядку та послідовність підбору цифр у стовпці G.
WEEKDAY обчислює кожне значення в названому діапазоні "дати" і повертає число. Результат - такий масив:
(3; 5; 3; 1; 2; 2; 4; 2)
Потім числа, що повертаються ВІДТРИМНИМ, порівнюються зі значенням у G4, яке дорівнює 1.
(3; 5; 3; 1; 2; 2; 4; 2) = 1
Результат - масив значень TRUE / FALSE.
(FALSE; FALSE; FALSE; TRUE; FALSE; FALSE; FALSE; FALSE)
Далі цей масив множиться на значення в названому діапазоні "amts". SUMPRODUCT працює лише з числами (не з текстом чи булевими значеннями), але математичні операції автоматично прив'язують значення TRUE / FALSE до свого та нулів, тому ми маємо:
(0; 0; 0; 1; 0; 0; 0; 0) * (100; 250; 75; 275; 250; 100; 300; 125)
Що дає:
(0; 0; 0; 275; 0; 0; 0; 0)
Маючи лише цей єдиний масив для обробки, SUMPRODUCT підсумовує елементи та повертає результат.