You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整SUMPRODUCT公式以忽略空筛选条件?

问题描述

数据表格

ABCDE
ProductBrandRevenueFilter ProductProduct A
Product ABrand 1500Filter BrandBrand 1
Product ABrand 2600Result500
Product BBrand 2400
Product CBrand 3350
Product CBrand 1800
Product CBrand 1700

需求与问题

需要在单元格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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:40:34