如何在SUMPRODUCT公式中使用行列条件范围而非单个单元格?
Excel多行列条件筛选求和问题
数据表格
| A | B | C | D | E | F | G | H | I |
|---|---|---|---|---|---|---|---|---|
| 1 | initial | tested | 2023 | 2024 | 2025 | Row Criteria | ||
| 2 | Brand A | 70 | yes | 500 | 70 | 60 | initial | |
| 3 | Brand A | 45 | yes | 100 | 47 | 300 | 2024 | |
| 4 | Brand A | 20 | yes | 800 | 21 | 200 | ||
| 5 | Brand B | 30 | yes | 90 | 56 | 150 | ||
| 6 | Brand C | 56 | no | 45 | 700 | 790 | ||
| 7 | Brand C | 84 | no | 600 | 150 | 40 | Result | |
| 8 | Brand D | 70 | yes | 900 | 90 | 980 | ||
| 9 | Brand D | 34 | yes | 125 | 854 | 726 | ||
| 10 | Brand D | 125 | yes | 70 | 860 | 614 | ||
| 11 | Brand D | 14 | yes | 842 | 250 | 85 | ||
| 12 | Brand E | 64 | no | 300 | 324 | 450 |
需求说明
- 行条件:筛选D列为
yes的行(对应表格中H2:H3应为行筛选条件,实际有效条件为D列=yes) - 列条件:筛选列标题属于
I2:I3(initial、2024)的列 - 预期结果(单元格I7):
(70+45+20+30)+(70+47+21+56) = 359
原公式问题
尝试的SUMPRODUCT公式返回0,核心错误是行列条件匹配逻辑颠倒,且多条件“或”逻辑未正确实现:
=SUMPRODUCT(IFERROR(IF(H2="",1,(B1:F1=H2))*IF(H3="",1,(B1:F1=H3))*IF(I2="",1,(A2:A12=I2))*IF(I3="",1,(A2:A12=I3))*(B2:F12),0))
解决方案
方案1:基础多条件求和公式
直接实现行(D列=yes)+列(标题在I2:I3)的筛选求和:
=SUMPRODUCT(--(D2:D12="yes"),--(ISNUMBER(MATCH(C1:F1,I2:I3,0))),C2:F12)
逻辑说明:
--(D2:D12="yes"):将D列是否为yes转换为1/0数组,标记符合条件的行--(ISNUMBER(MATCH(C1:F1,I2:I3,0))):将列标题是否在I2:I3中转换为1/0数组,标记符合条件的列- SUMPRODUCT自动匹配行列维度,对符合双条件的单元格求和
方案2:支持空条件的通用写法
如果需要支持条件区域有空值(空值代表不限制该条件),可以使用:
=SUMPRODUCT( --(IF(COUNTA(H2:H3)=0,TRUE,D2:D12=H2:H3)), --(IF(COUNTA(I2:I3)=0,TRUE,ISNUMBER(MATCH(C1:F1,I2:I3,0)))), C2:F12 )
逻辑说明:
COUNTA(H2:H3)=0判断行条件区域是否为空,为空则所有行都符合条件COUNTA(I2:I3)=0判断列条件区域是否为空,为空则所有列都符合条件
内容的提问来源于stack exchange,提问作者Michi
相关产品推荐
相关产品推荐

