Формула на Excel: Сума по делничен ден -

Съдържание

Обща формула

=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)

След това числата, върнати от WEEKDAY, се сравняват със стойността в 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 сумира елементите и връща резултата.

Интересни статии...