Google Sheets多列条件求和问题:按行列条件计算指定总和
解决SUMIFS数组尺寸不匹配的多条件求和问题
数据表格
| A | B | C | D | E | F |
|---|---|---|---|---|---|
| product_type | adoption | adoption | other | retail | retail |
| january | 10 | 15 | 50 | 12 | 20 |
| january | 15 | 115 | 56 | 1 | 10 |
| february | 20 | 100 | 50 | 0 | 100 |
需求
对B-F列中同时满足以下两个条件的所有数值求和:
- 第2行的
product_type为"adoption" - A列的月份为
"january"
预期结果:10+15+15+115=155
问题
尝试使用公式 SUMIFS(B3:F, A3:A, "january", B2:2, "adoption") 时,出现错误提示:Array Arguments to SUMIFS are of different size
错误原因
SUMIFS函数要求所有条件区域与求和区域的尺寸完全一致。原公式中:
- 求和区域
B3:F是3行5列 - 第一个条件区域
A3:A是3行1列 - 第二个条件区域
B2:2是1行5列
三者尺寸不匹配,导致报错。
正确解法
1. 兼容所有Excel版本:SUMPRODUCT函数
使用SUMPRODUCT处理跨行列的多条件求和,无需考虑区域尺寸匹配:
=SUMPRODUCT((A3:A5="january")*(B2:F2="adoption")*B3:F5)
原理:
(A3:A5="january")生成3行1列的布尔数组,标记哪些行是1月(B2:F2="adoption")生成1行5列的布尔数组,标记哪些列是adoption类型- 两个布尔数组相乘时会自动扩展为3行5列的数组,精准定位同时满足两个条件的单元格
- 最后与数值区域
B3:F5相乘,SUMPRODUCT会对所有符合条件的数值求和
2. Excel 365/2021:动态数组简化公式
如果使用支持动态数组的Excel版本,可直接用SUM结合数组运算:
=SUM((A3:A5="january")*(B2:F2="adoption")*B3:F5)
或者用FILTER函数更直观:
=SUM(FILTER(B3:F5, A3:A5="january") * TRANSPOSE(FILTER(B2:F2, B2:F2="adoption")))
两种解法最终计算结果均为155,符合预期。
内容的提问来源于stack exchange,提问作者eleove
相关产品推荐
相关产品推荐

