Excel中如何按行匹配并对多列数组进行求和?
按行对同类别多列数值求和的实现方法
原始数据表格
| 姓名 | Animal | Animal | Color | Color |
|---|---|---|---|---|
| Jane | 1 | 3 | 2 | |
| John | 1 | 2 | 1 |
目标结果表格
| 姓名 | Animal | Color |
|---|---|---|
| Jane | 1 | 5 |
| John | 3 | 1 |
给你几个实用的解决办法:
方法1:SUMPRODUCT函数(一键批量计算)
直接在目标表格的对应单元格输入公式,下拉右拉就能自动填充所有结果。
比如计算Jane的Animal求和(目标表B2单元格):
=SUMPRODUCT((原始表!$B$1:$E$1=目标表!$B$1)*原始表!B2:E2)
公式逻辑:用原始表的表头区域$B$1:$E$1匹配目标表的当前表头(比如$B$1是Animal),匹配成功的列对应行的数值会被计入求和,空值自动按0处理,完美适配需求。
方法2:IF+SUM数组公式(适配旧版Excel)
如果是Excel 2019及以前版本,用这个数组公式(输入后按Ctrl+Shift+Enter触发数组计算):
=SUM(IF(原始表!$B$1:$E$1=目标表!B$1,原始表!B2:E2,0))
Excel 365/2021版本无需按三键,输入后会自动溢出计算整列。
方法3:Power Query批量处理(无公式更省心)
如果数据量较大或不想写公式,用Power Query一步到位:
- 选中原始数据区域,点击「数据」选项卡→「从表格/区域」(Excel 2016及以上版本支持)
- 在Power Query编辑器中,选中「姓名」列,点击「转换」→「逆透视列」→「逆透视其他列」,把多列转成「属性(原表头)」和「值」两列
- 选中「姓名」和「属性」列,点击「转换」→「分组依据」,分组列选姓名+属性,操作选「求和」,列名设为「求和值」
- 选中「属性」列,点击「转换」→「透视列」,值列选择「求和值」
- 点击「关闭并上载」,直接得到目标表格,后续数据更新只需刷新即可。
内容的提问来源于stack exchange,提问作者Sponge
相关产品推荐
相关产品推荐

