ARTICLE · 1001773
零基础学EXCEL 第十四篇:SUMPRODUCT函数与SUMIFS函数的结合使用
前面有讲到SUM、SUMIF、SUMIFS的用法,今天给大家讲解SUMPRODUCT函数与SUMIFS函数的结合使用,让大家知道在什么情况下使用这2个函数。
这里说的结合使用 SUMPRODUCT 和 SUMIFS 并不是指将它们嵌套在一个公式里(通常也不建议这样做,因为逻辑太冗余),而是指在不同的业务场景下,根据数据的复杂程度和引用方式,灵活选择或组合使用这两个函数。
简单来说,主要分以下场景:
1、简单多条件、同表统计: 用 SUMIFS
2、跨表引用、复杂逻辑(如“或”关系、函数判断):用 SUMPRODUCT
3、多值批量求和 : 用SUMPRODUCT 嵌套 SUMIFS

以下结合不同场景给大家举例说明:
一、跨工作表/跨工作簿求和:用SUMPRODUCT
当需要从一个关闭的外部文件或另一个工作表引用数据时,SUMIFS函数经常会因为链接更新问题报错或返回0,而 SUMPRODUCT函数可以稳健运行。
公式模板:
=SUMPRODUCT((条件区域1=条件1)*(条件区域2=条件2)*求和区域)
举例:
假如要在一个新表中,统计另一个工作薄“销售总表”中“销售明细”工作表里面的部门是“销售部”且“销售额”大于500的总和,如图:

(1)SUMIFS 做法:
=SUMIFS([销售总表.xlsx]销售明细!$E:$E,[销售总表.xlsx]销售明细!$B:$B,A2,[销售总表.xlsx]销售明细!$E:$E,">500")
在“销售总表”打开状态时,计算结果没有问题;但将其关闭后,公式会报错:

(2)SUMPRODUCT 做法:
=SUMPRODUCT(([销售总表.xlsx]销售明细!$B2:$B22=A3)*([销售总表.xlsx]销售明细!$E2:$E22>500)*[销售总表.xlsx]销售明细!$E2:$E22)
即使源文件关闭,只要路径正确,它也能直接读取数值进行计算,无需刷新链接。

二、处理“或”逻辑(OR)与复杂排除
SUMIFS 的所有条件之间是“与”(AND)的关系,无法直接处理“部门A 或 部门B”的情况。虽然可以用多个SUMIFS相加,但公式冗长。
这时用 SUMPRODUCT 更好。
举例:
假如要统计“销售部” 或 “市场部” 且 “销售额 > 500” 的总额:

(1)SUMIFS 做法:
=SUMIFS(E:E,B:B,L2,E:E,">500")+SUMIFS(E:E,B:B,L3,E:E,">500")

(2)SUMPRODUCT 做法:利用 + 号代表“或”,* 号代表“且”
公式模板:
=SUMPRODUCT(((条件区域1=条件1) + (条件区域2=条件2))) * (条件区域3>500) * 求和区域)

三、多值批量求和(SUMPRODUCT 嵌套 SUMIFS)
如果需要一次性计算多个特定项目(如“蔬菜”、“水果”、“肉食”)的总和,写三个 SUMIFS 相加太慢。可以利用 SUMPRODUCT 的数组特性来驱动 SUMIFS。
公式模板:
=SUMPRODUCT(SUMIFS(求和列, 条件列, {"值1","值2","值3"}))

四、动态阈值与函数判断
这是SUMIFS 的短板,SUMIFS 的条件区域必须是直接的单元格引用,不能在条件区域里套用函数(如 MONTH()、YEAR()、LEN() 等)。如果需要基于日期月份、字符长度等动态条件求和,必须用 SUMPRODUCT。
举例:统计所有“3月份”的销售总额。

(1)SUMIFS 做法:
=SUMIFS(E:E, MONTH(A:A), 2) → 报错,因为 MONTH(A:A) 不是有效的区域引用。
(2)SUMPRODUCT 做法:
=SUMPRODUCT((MONTH(A2:A22)=3) * E2:E22)
| 跨工作表/跨工作簿引用 | ||
使用建议:
在日常工作中,优先使用SUMIFS,因为它更高效、更易维护。
只有当 SUMIFS 无法满足需求(如跨表报错、需要OR逻辑、需要函数判断)时,再切换到 SUMPRODUCT。
掌握这两者的互补关系,就能解决Excel中99%的求和问题,大家快学起来吧!