Обща формула
=SUMPRODUCT(--(logical_expression))
Обобщение
За да преброите редове в таблица, които отговарят на вътрешни, изчислени критерии, без да използвате помощна колона, можете да използвате функцията SUMPRODUCT.
Контекст
Представете си, че имате таблица с данни за продажбите на няколко продукта. Имате колона за продажби миналия месец и колона за продажби през текущия месец. Искате да преброите продукти (редове), където текущите продажби са по-малко от продажбите през миналия месец. Не можете да използвате COUNTIFs за това, защото COUNTIFs е функция, базирана на диапазон. Едната опция е да добавите помощна колона, която изважда продажбите от миналия месец от продажбите за този месец, след което използвайте COUNTIF, за да преброите резултатите, по-малки от нула. Но какво, ако не искате (или не можете) да добавите помощна колона? В този случай можете да използвате SUMPRODUCT.
В показания пример формулата в клетка G6 е:
=SUMPRODUCT(--(C5:C10>D5:D10))
Обяснение
SUMPRODUCT е предназначен за работа с масиви. Той умножава съответните елементи в два или повече масива и сумира получените продукти. В резултат на това можете да използвате SUMPRODUCT за обработка на масиви, които са резултат от критерии, приложени към набор от клетки. Резултатът от такива операции ще бъдат масиви, с които SUMPRODUCT може да се справя родно, без да се изисква синтаксис Control Shift Enter.
В този случай просто сравняваме стойностите в колона C със стойностите в колона D, използвайки логически израз:
C5:C10>D5:D10
Тъй като имаме работа с диапазони (масиви), резултатът е масив от TRUE FALSE стойности като този:
(FALSE; TRUE; FALSE; TRUE; FALSE; FALSE)
За да ги принудим в единици и нули, използваме двойно отрицателен оператор (наричан още двоен унар):
--(C5:C10>D5:D10)
Който произвежда и масива по този начин:
(0; 1; 0; 1; 0; 0)
който след това се обработва от SUMPRODUCT. Тъй като има само един масив, SUMPRODUCT просто събира елементите в масива и връща общ резултат.