这里有最实用的Excel使用技巧,通过提高Excel技能,可以让你轻松应对工作中的表格处理,提高你的工作效率!
前两期我们聊过 SUBTOTAL 和 AGGREGATE:一个专门处理隐藏行统计,一个可以跳过错误值计算,都是财务日常统计的利器。
但 Excel 里还有一个函数,名气没有 SUM 大,功能却让人直呼「怎么不早点知道」。
今天的主角SUMPRODUCT——名字叫「乘积之和」,实际上它能干的事远远不止乘积之和:条件求和、加权平均、多条件计数、交叉表分析,一个函数全搞定。
一、SUMPRODUCT 是什么?
一句话理解:SUMPRODUCT = 多组数组对应元素相乘,最后把全部乘积求和;借助布尔逻辑写法后,相当于 SUMIFS + COUNTIFS + 加权汇总的三合一函数。
基础语法:=SUMPRODUCT(数组1, 数组2, ...)
它的本职工作很简单:把对应的元素相乘,然后把乘积加起来。比如单价列(10,20,30) × 数量列(3,5,2),结果 = 10×3+20×5+30×2 = 190。
但 SUMPRODUCT 的真正威力在于「条件判断」——利用 (条件1)*(条件2)*数据区域 这种写法,实现多条件求和、计数、加权。
写法 | 作用 | 等价函数 |
=SUMPRODUCT((条件区域=条件)*1) | 单条件计数 | COUNTIF |
=SUMPRODUCT((区1=条件1)*(区2=条件2)) | 多条件计数 | COUNTIFS |
=SUMPRODUCT((区域=条件)*求和列) | 单条件求和 | SUMIF |
=SUMPRODUCT((区1=条件1)*(区2=条件2)*求和列) | 多条件求和 | SUMIFS |
=SUMPRODUCT(值列,权重列)/SUM(权重列) | 加权平均 | — |
⚠️注意:条件判断如 (区域=条件) 返回TRUE/FALSE,需要用 *1 或-- 转为1/0。但在乘式中Excel会自动转换,所以 (条件)*数据 不需要额外转。
二、实战场景
场景1:加权平均分——班主任的算分神器
痛点:期末算加权平均分,语文权重3、数学3、英语2、物理2。常规做法要加辅助列,SUMPRODUCT一行公式搞定。
示例数据:
姓名 | 语文 | 数学 | 英语 | 物理 |
小王 | 85 | 92 | 78 | 90 |
小李 | 90 | 88 | 85 | 82 |
小张 | 78 | 95 | 88 | 76 |
权重:语文=3, 数学=3, 英语=2, 物理=2
公式:=SUMPRODUCT(B2:E2, {3,3,2,2}) / SUM(3+3+2+2)
结果:小王加权平均 = (85×3+92×3+78×2+90×2)/10 = 86.7
场景2:多条件求和——不用SUMIFS也能行
痛点:老板要「华东区销售经理张三」的全年业绩汇总。SUMPRODUCT原生支持多条件,不需要Ctrl+Shift+Enter。
姓名 | 区域 | 职位 | 季度 | 业绩 |
张三 | 华东 | 销售经理 | Q1 | 85000 |
李四 | 华北 | 销售代表 | Q1 | 62000 |
张三 | 华东 | 销售经理 | Q2 | 92000 |
王五 | 华东 | 销售代表 | Q1 | 53000 |
张三 | 华东 | 销售经理 | Q3 | 78000 |
李四 | 华北 | 销售经理 | Q1 | 71000 |
张三 | 华东 | 销售经理 | Q4 | 95000 |
王五 | 华东 | 销售代表 | Q2 | 48000 |
公式:=SUMPRODUCT((A2:A9="张三")*(B2:B9="华东")*(C2:C9="销售经理")*E2:E9)
结果:85,000+92,000+78,000+95,000 = 350,000
场景3:多条件计数——有多少个符合条件的员工
公式:=SUMPRODUCT((B2:B9="华东")*(D2:D9="Q1")*(E2:E9>50000)*(C2:C9="销售代表"))
结果:1(只有王五符合)
SUMPRODUCT比COUNTIFS更灵活:条件可以是函数运算结果,如 LEFT(B:B)="华" 或 LEN(A:A)=2,COUNTIFS做不到。
场景4:跨表交叉匹配求和——VLOOKUP和SUM合二为一
销售明细:
日期 | 产品编号 | 数量 |
7/1 | P001 | 10 |
7/2 | P003 | 5 |
7/3 | P002 | 8 |
7/4 | P001 | 15 |
7/5 | P003 | 6 |
价格表:
产品编号 | 单价 |
P001 | 120 |
P002 | 85 |
P003 | 200 |
公式:=SUMPRODUCT(C2:C6, SUMIF(G2:G4, B2:B6, H2:H4))
结果:10×120+5×200+8×85+15×120+6×200 = 5,880
三、Python 版:大数据量的 SUMPRODUCT
海量数据时,Excel 容易卡顿,用 pandas 处理效率更高,实现同类逻辑:
import pandas as pddf = pd.read_excel('销售数据.xlsx')# 多条件求和r = df[(df['区域']=='华东')&(df['职位']=='销售经理')]['业绩'].sum()# 多条件计数c = df[(df['区域']=='华东')].shape[0]# 跨表匹配df_p = pd.read_excel('价格表.xlsx')merged = df.merge(df_p, on='产品编号')total = (merged['数量']*merged['单价']).sum()
pandas 可自动忽略缺失值,支持数十万行大数据计算,运行流畅不卡顿。
四、SUMPRODUCT 使用小帖士
保证所有参与运算的数组区域长度一致,否则会出现 #VALUE! 报错 多条件筛选务必使用 * 乘号写法;逗号参数模式不适合布尔条件运算 尽量避免整列全引用(如 A:A),老版本 Excel 会大幅拖慢运算速度,限定实际数据范围 原生不支持 *、? 通配符模糊匹配,如需模糊筛选,可搭配 ISNUMBER+SEARCH 函数实现 常规简单多条件统计优先用 SUMIFS / COUNTIFS;遇到复杂数组逻辑、模糊函数条件时,再用 SUMPRODUCT
附:长期坚持原创不易,如文章能够为大家带来少少帮助的,请大家点赞并转发,以支持我继续分享创作,你的支持将是我的不懈动力!谢谢!
(本文为本公众号原创,未经允许和授权,严禁转载,违者必究)
夜雨聆风