SUMPRODUCT:被90%的人低估的数组计算神器

SUMPRODUCT:被90%的人低估的数组计算神器

 次点击
14 分钟阅读

它不只是求乘积之和,它是个披着求和外套的条件计算怪兽。


很多人理解错了

刚听到SUMPRODUCT这个名字,以为是"求乘积的和"。

没错,这是它的基本功能。但如果你只用到这个,你只发挥了它10%的威力

它真正的身份是:数组公式终结者


基础用法:求乘积之和

假设你有数量和单价,想算总价:

产品 数量 单价
A 10 20
B 5 30
C 8 15
=SUMPRODUCT(B2:B4, C2:C4)

计算过程:(10×20) + (5×30) + (8×15) = 200+150+120 = 470

不用辅助列,一步到位。


进阶用法1:多条件计数

需求:统计"技术部"且"工资>15000"的人数

传统做法:COUNTIFS,或者用辅助列。

SUMPRODUCT写法:

=SUMPRODUCT((B2:B10="技术部")*(C2:C10>15000))

原理:

  • (B2:B10="技术部") 返回 {TRUE, FALSE, TRUE, ...}
  • (C2:C10>15000) 返回 {TRUE, TRUE, FALSE, ...}
  • TRUE*TRUE = 1,其他组合都是0
  • 最后求和就是符合条件的个数

进阶用法2:多条件求和

需求:求"技术部"的"年终奖"总和

=SUMPRODUCT((A2:A100="技术部")*(D2:D100))

或者加上更多条件:

=SUMPRODUCT((部门列="技术部")*(年份=2024)*(奖金列))

注意: 条件用括号包起来,这是语法!


进阶用法3:实现类似SUMIFS但更强的功能

SUMIFS有个坑:条件区域和求和区域必须一样大

SUMPRODUCT没这个限制,而且支持数组运算。

实战:计算加权平均分

科目 分数 权重
数学 90 0.4
英语 85 0.3
物理 88 0.3
=SUMPRODUCT(B2:B4, C2:C4) / SUM(C2:C4)

结果:(90×0.4 + 85×0.3 + 88×0.3) / (0.4+0.3+0.3) = 87.9


进阶用法4:按月份统计(日期处理)

需求:统计2024年3月的销售额

=SUMPRODUCT((YEAR(A2:A100)=2024)*(MONTH(A2:A100)=3)*(B2:B100))

不需要辅助列,不需要透视表,一个公式搞定。


进阶用法5:跨表多条件查找

这个就比较骚了...

假设你有两个表,要根据多个条件匹配数据:

=SUMPRODUCT((表1!A:A=查找值1)*(表1!B:B=查找值2)*(表1!C:C))

注意: 这个返回的是求和结果,如果确定只有一条匹配数据,就可以当查找用。


为什么用SUMPRODUCT而不是数组公式?

特性 SUMPRODUCT 传统数组公式
输入方式 直接回车 需要Ctrl+Shift+Enter
可读性 较好 容易看花眼
兼容性 全版本支持 部分老版本不支持
性能 大数据稍慢 差不多

性能警告

SUMPRODUCT好用是好用,但别滥用:

  • 整列引用会卡死(A:A=条件) 这种写法数据量大的时候Excel会无响应
  • 建议用具体范围(A2:A1000=条件)

我常用的模板

# 多条件计数
=SUMPRODUCT((条件1)*(条件2)*(条件3))

# 多条件求和
=SUMPRODUCT((条件1)*(条件2)*求和列)

# 加权平均
=SUMPRODUCT(数值列, 权重列)/SUM(权重列)

# 按日期统计
=SUMPRODUCT((YEAR(日期列)=年份)*(MONTH(日期列)=月份)*数值列)

一句话总结

SUMPRODUCT = 条件计数 + 条件求和 + 加权计算 + 日期处理,一个函数干四个函数的活。

下次有人让你统计这统计那,直接甩个SUMPRODUCT公式,深藏功与名。


这函数我当年学的时候也觉得怪怪的,用熟了之后发现是真香。现在写报表基本离不开了。

© 本文著作权归作者所有,未经许可不得转载使用。