如何调整SUMPRODUCT公式以忽略空筛选条件?
问题描述
数据表格
| A | B | C | D | E |
|---|---|---|---|---|
| Product | Brand | Revenue | Filter Product | Product A |
| Product A | Brand 1 | 500 | Filter Brand | Brand 1 |
| Product A | Brand 2 | 600 | Result | 500 |
| Product B | Brand 2 | 400 | ||
| Product C | Brand 3 | 350 | ||
| Product C | Brand 1 | 800 | ||
| Product C | Brand 1 | 700 |
需求与问题
需要在单元格E3中,根据单元格E1和单元格E2的条件对C列收入求和。原公式可正常匹配双条件:
=SUMPRODUCT(($C$2:$C$7)*($A$2:$A$7=E1)*($B$2:$B$7=E2))
现在需要新增逻辑:若E1或E2为空,则忽略对应筛选条件。例如E1为空、E2="Brand 1"时,结果应为2000(500+800+700)。但尝试的修改公式返回0,不符合预期:
=SUMPRODUCT(($C$2:$C$7)*($A$2:$A$7=IF(E1="","*",E1))*($B$2:$B$7=IF(E2="","*",E2)))
解决方案
正确公式写法
SUMPRODUCT的等于判断不支持通配符匹配,需换逻辑:当条件单元格为空时,让对应判断式返回TRUE(即所有行都满足),否则执行相等判断。推荐两种写法:
写法一(清晰逻辑版)
=SUMPRODUCT($C$2:$C$7, --(IF(E1="", TRUE, $A$2:$A$7=E1)), --(IF(E2="", TRUE, $B$2:$B$7=E2)))
写法二(简洁版)
=SUMPRODUCT($C$2:$C$7*--(E1="" OR $A$2:$A$7=E1)*--(E2="" OR $B$2:$B$7=E2))
逻辑说明
E1="" OR $A$2:$A$7=E1:若E1为空,表达式对所有行返回TRUE;若E1有值,仅对A列等于E1的行返回TRUE--用于将布尔值TRUE/FALSE转换为数值1/0,让SUMPRODUCT可执行乘法运算- 两个条件判断相乘后,只有同时满足条件的行才会被计入求和
测试你提到的场景:E1为空、E2="Brand 1"时,公式会自动忽略产品筛选,计算所有B列为Brand 1的C列数值之和,结果为2000,符合预期。
内容的提问来源于stack exchange,提问作者Michi
相关产品推荐
相关产品推荐

