Формула на Excel: SUMPRODUCT с IF -

Обща формула

=SUMPRODUCT(expression,range)

Обобщение

За да филтрирате резултатите от SUMPRODUCT с конкретни критерии, можете да приложите прости логически изрази директно към масиви във функцията, вместо да използвате функцията IF. В показания пример формулите в H5: H7 са:

=SUMPRODUCT(--(color="red"),quantity,price) =SUMPRODUCT(--(state="tx"),--(color="red"),quantity,price) =SUMPRODUCT(--(state="co"),--(color="blue"),quantity,price)

където са дефинирани следните именувани диапазони:

state=B5:B14 color=C5:C14 quantity=D5:D14 price=E5:E14

Ако предпочитате да избягвате именувани диапазони, използвайте посочените по-горе диапазони като абсолютни препратки. Логическите изрази в H6 и H7 могат да се комбинират, както е обяснено по-долу.

Обяснение

Този пример илюстрира една от ключовите силни страни на функцията SUMPRODUCT - възможността за филтриране на данни с основни логически изрази вместо функцията IF. Вътре в SUMPRODUCT първият масив е логичен израз за филтриране върху цвета "червен":

--(color="red")

Това води до масив или TRUE FALSE стойности, които са принудени в единици и нули с операцията двойно отрицателно (-). Резултатът е този масив:

(1;0;1;0;0;0;1;0;0;0)

Забележете, че масивът съдържа 10 стойности, по една за всеки ред. Единият показва ред, където цветът е "червен", а нула означава ред с всеки друг цвят.

След това имаме още два масива: един за количество и един за цена. Заедно с тези резултати от първия масив имаме:

=SUMPRODUCT((1;0;1;0;0;0;1;0;0;0),quantity,price)

Разширявайки масивите, имаме:

=SUMPRODUCT((1;0;1;0;0;0;1;0;0;0),(10;6;14;9;11;10;8;9;11;10),(15;18;15;16;18;18;15;16;18;16))

Основното поведение на SUMPRODUCT е да се умножава, след което да се сумират масиви. Тъй като работим с три масива, можем да визуализираме операцията, както е показано в таблицата по-долу, където колоната с резултати е резултат от умножаване на array1 * array2 * array3 :

масив1 масив2 масив3 резултат
1 10 15 150
0 6 18. 0
1 14. 15 210
0 9 16. 0
0 11. 18. 0
0 10 18. 0
1 8 15 120
0 9 16. 0
0 11. 18. 0
0 10 16. 0

Забележете, че array1 работи като филтър - нулевите стойности тук „нулират“ стойности в редове, където цветът не е „червен“. Връщайки резултатите обратно в SUMPRODUCT, имаме:

=SUMPRODUCT((150;0;210;0;0;0;120;0;0;0))

Което връща краен резултат от 480.

Добавяне на допълнителни критерии

Можете да разширите критериите, като добавите друг логически израз. Например, за да намерите общите продажби, където цветът е "Червен", а състоянието е "TX", H6 съдържа:

=SUMPRODUCT(--(state="tx"),--(color="red"),quantity,price)

Забележка: SUMPRODUCT не чувствителен към регистъра.

Опростяване с един масив

Професионалистите на Excel често опростяват синтаксиса вътре в SUMPRODUCT, като умножават масивите директно в array1 по следния начин:

=SUMPRODUCT((state="tx")*(color="red")*quantity*price)

Това работи, защото математическата операция (умножение) автоматично принуждава стойностите TRUE и FALSE от първите два израза в единици и нули.

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