Excel 365中如何用数组函数汇总匹配指定发票号的多列金额?
跨月份发票金额汇总方案
完全可行,不用纠结SUMPRODUCT+OFFSET的复杂组合,有两种更直接的实现方式:
一、直接用SUMPRODUCT函数计算(无需修改原始表)
针对你这种每两个月一组「发票号+金额」的宽表结构,直接遍历所有发票列和对应金额列即可。以你的示例数据为例:
假设结果表的发票号在F2单元格,计算总金额的公式为:
=SUMPRODUCT((($A$2:$A$4=$F2)+($C$2:$C$4=$F2))*($B$2:$B$4+$D$2:$D$4))
如果是3年的完整数据(共18组发票+金额列),只需把所有发票列用+连接、所有金额列用+连接,扩展公式即可:
=SUMPRODUCT((($A$2:$A$4=$F2)+($C$2:$C$4=$F2)+($E$2:$E$4=$F2)+...)*($B$2:$B$4+$D$2:$D$4+$F$2:$F$4+...))
公式逻辑:判断所有发票列是否等于目标发票号,匹配成功的对应金额列数值相加,得到总金额。
二、转成窄表后用数据透视表汇总(长期维护更高效)
你的原始宽表结构不利于长期数据管理与汇总,建议先转成「发票号+金额+月份」的窄表,再用数据透视表快速汇总:
- 复制原始数据到新工作表
- 选中数据,通过Excel「数据」选项卡的「获取和转换数据」功能(Power Query),将每组「发票号+金额」列拆分为独立行
- 转成窄表后插入数据透视表:
- 将「发票号」拖到行区域,「金额」拖到值区域
- 值字段设置为「求和」,自动生成所有发票的汇总金额
示例验证
针对你给出的示例数据,计算KTL3020的总金额,代入公式后结果为$315,000.00,与期望结果完全一致。
注意事项
- 确保发票号匹配一致,若存在大小写差异,可嵌套
UPPER函数统一格式(如UPPER($A$2:$A$4)=UPPER($F2)) - 金额列必须为数值格式,若为文本格式需先转换,否则函数无法正确计算
内容的提问来源于stack exchange,提问作者Whitmbk
相关产品推荐
相关产品推荐

