Excel 中的 SUMIFS() 函数可基于多个条件对数值求和,从而让我们对计算进行精确控制。与只检查一个条件的 SUMIF() 不同,SUMIFS() 可以同时处理多个条件。
在本文中,我将通过进阶示例与故障排查技巧,向您展示如何使用 SUMIFS()。读完之后,您将掌握如何用 SUMIFS() 让计算更准确、更高效。
快速答案
在 Excel 中使用 SUMIFS() 函数:
-
输入 =SUMIFS( 开始函数。
-
选择包含要求和数值的区域。
-
选择要应用条件的区域。
-
输入要匹配的条件。
-
闭合括号并按下 Enter。
这里,我对所有大于 200 的销售额进行了求和。
=SUMIFS(B2:B8, B2:B8, ">200")技术支持

使用 SUMIFS() 对数值求和。作者供图。
理解 SUMIFS() 函数
Excel 中的 SUMIFS() 仅在满足所有指定条件时才对数值求和。它支持大于 >、小于 <、等于 =、不等于 <> 等逻辑运算符,以及用于部分匹配的通配符。该函数可处理数字、文本和日期。
SUMIFS() 的语法
SUMIFS() 先指定要求和的数值区域,然后是成对出现的条件区域与条件。请注意,SUMIFS() 可以处理多个逻辑条件。
SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], …)技术支持
其中:
-
sum_range 是您要相加的单元格区域。
-
criteria_range1 是我们检查条件的第一个区域。
-
criteria1 是应用于 criteria_range1 的条件。
-
[criteria_range2, criteria2], … 为可选。您可以添加更多成对的区域与条件。每一对都会增加一个必须满足的条件。
请注意,criteria_range (用于检查条件的区域)必须与 sum_range(求和的区域)具有相同的行数与列数。
SUMIFS() 示例
让我们尝试一个基础示例。我有一份包含水果、数量和销售额的数据集。我想找出“苹果”且数量大于 5 的总销售额。我的公式如下:
=SUMIFS(C2:C8, A2:A8, "Apples", B2:B8, ">5")技术支持
这里 C2:C8 是要求和的区域 (Sales ($))。A2:A8, "Apples" 是只包含产品为苹果的行的条件。而 B2:B8, ">5" 是只包含数量超过 5 的行的条件。

按条件汇总销售额的 SUMIFS() 公式。作者供图。
SUMIF() 与 SUMIFS()
SUMIF() 与 SUMIFS() 的主要区别在于可用条件的数量。SUMIF() 只处理单个条件,而 SUMIFS() 可处理多个条件。
| Feature | SUMIF() | SUMIFS() |
|---|
| Number of conditions | Single condition only | Multiple conditions (up to 127) |
| Logic type | Simple filtering | AND logic (all conditions must be met) |
| Syntax | =SUMIF(range, criteria, [sum_range]) | =SUMIFS(sum_range, criteria_range1, criteria1, …) |
| Argument order | Criteria range first, sum range last | Sum range first, followed by criteria pairs |
| Best used for | Simple filtering tasks | Complex data analysis with multiple criteria |
换个角度看,SUMIFS() 其实是 SUMIF() 的扩展。我之所以这么说,是因为 SUMIFS() 也能处理单个条件,因此当您只用一个条件时,它和 SUMIF() 的作用相同。这意味着选择 SUMIFS() 而不是 SUMIF() 从技术上说永远不会错。您可以参考我们的 Excel 公式速查表,了解更多值得掌握的 Excel 公式。
Excel 中 SUMIFS() 的使用场景
既然您已经了解了 SUMIFS() 的工作原理,让我们看看一些可应用于真实场景的进阶用法。
将 SUMIFS() 用于不同数据类型
SUMIFS() 可处理不同的数据类型,如数字、文本与日期。假设我有一份销售报告,但有些行缺少客户姓名。我想只对有客户姓名的行进行求和,为此我使用以下公式:
=SUMIFS(C2:C5, A2:A5, "<>")技术支持
该公式查看客户(Customer)列,检查非空单元格,然后汇总对应的销售额。

使用 SUMIFS() 对所有非空单元格求和。作者供图。
若要对缺少客户姓名的销售额求和,我使用此公式:
=SUMIFS(C2:C10, A2:A10, "", B2:B10, "")技术支持

使用 SUMIFS() 对空白单元格求和。作者供图。
与其将条件硬编码,我们可以把条件存放在其他单元格中。若我想汇总 Sarah Lee 的销售额,我在 E3 单元格中输入该名字,并使用如下公式:
=SUMIFS(C2:C5, A2:A5, E3)技术支持
当 E3 中的值变化时,总计会自动更新。

使用单元格引用通过 SUMIFS() 求和。作者供图。
在 SUMIFS() 中应用 OR 逻辑
我们知道 SUMIFS() 只使用 AND 逻辑,这意味着只有当我们设置的所有条件都为真时才会求和。然而,如果我们想用 OR 逻辑,即只要多个条件中任意一个满足就进行求和,则可以通过组合多个 SUMIFS() 来实现。
例如,如果我想汇总 John Doe 或 Drake White 的销售额,我可以像这样组合两个 SUMIFS() 公式:
=SUMIFS(C2:C8, A2:A8, "John Doe") + SUMIFS(C2:C8, A2:A8, "Drake White")技术支持
由于列表中没有 Drake White,公式的那一部分将返回 0。总计只包含 John Doe 的销售额,这也展示了 OR 逻辑的工作方式。

在 SUMIFS() 中使用 OR 逻辑。作者供图。
在 Excel 365 或更高版本中,我们可以用数组公式简化,并得到相同结果。
=SUMIFS(C2:C8,A2:A8,{"John Doe","Drake White"})技术支持

使用 SUMIFS() 的数组公式。作者供图。
配合命名范围使用 SUMIFS()
我们还可以使用命名范围来替代像 A2:A5 或 C2:C5 这样的单元格引用。在此示例中,我将 A2:A5 命名为 Customer_list,将 C2:C5 命名为 Sales_list。现在 要找出John 的总销售额,我使用如下公式:
=SUMIFS(Sales_list, Customer_list, "John")技术支持

使用命名范围配合 SUMIFS() 求和。作者供图。
使用通配符进行部分匹配
通配符是特殊字符(* 或 ?),用于在文本搜索与模式匹配中表示未知或可变字符:
-
* 可匹配任意数量的字符(包括零个)。
-
? 精确匹配单个字符。
它们的工作方式如下:
-
A* 将匹配所有以 A 开头的单元格。
-
*A 将匹配所有以 A 结尾的单元格。
-
*A* 将匹配所有任意位置包含 A 的单元格。
SUMIFS() 通过通配符提供文本匹配功能。它可以识别以特定文本开头、结尾或包含特定文本模式的值。假设我想汇总产品代码以 ABC 开头的销售额,此时我的公式如下:
=SUMIFS(D2:D8, C2:C8, "ABC*")技术支持
若要汇总以 00 结尾的销售额,
=SUMIFS(B2:B7, A2:A7, "*00")技术支持

在 SUMIFS() 中使用通配符。作者供图。
基于日期范围求和
SUMIFS() 也可以在特定日期范围内求和。若我想知道 2023 年 1 月的所有销售额,我会使用以下公式:
=SUMIFS(D2:D8, B2:B8, ">=01-Jan-2023", B2:B8, "<=31-Jan-2023") 技术支持
该公式将检查 2023 年 1 月 1 日到 2023 年 1 月 31 日的日期,并汇总所有销售额。

使用 SUMIFS() 对日期范围求和。作者供图。
基于多个数值条件求和
SUMIFS() 可以对落在特定数值区间内的值进行求和。这里我有一组随机数据,想对销售额大于 100 且小于 300 的值求和。为此我使用以下公式:
=SUMIFS(C2:C5, C2:C5, ">100", C2:C5, "<300")技术支持
该公式首先将要求和的单元格区域(C2:C5)作为第一个参数,然后对同一区域应用上述两个条件。SUMIFS() 会同时根据两个条件评估区域中的每个单元格。您会看到只有介于 100 与 300 之间(不含端点)的单元格会被计入总和。

使用 SUMIFS() 按数值区间求和。作者供图。
SUMIFS() 不工作时的排查
如果您的 SUMIFS() 函数没有按预期工作,请检查以下问题:
区域大小不匹配
若 SUMIFS() 公式返回错误,可能是区域大小不匹配所致。在 SUMIFS() 中,您选择的所有区域,如 sum_range 与各个 criteria_ranges,都必须具有相同的行数与列数。
例如,在这个公式中,求和区域是 B2:B8,而条件区域是 A2:A7,比前者少一行:
=SUMIFS(B2:B8, A2:A7, "Drake White")技术支持
这种不匹配会产生 #VALUE! 错误。因此,请确保所有区域大小一致,如下所示:
=SUMIFS(B2:B8, A2:A8, "John Doe")技术支持
文本条件格式不正确
在 SUMIFS() 中,文本条件必须放在引号内。否则可能得到不正确的结果。例如,这个公式将返回 0 因为 Excel 会将 Drake White 视为名称或变量,而不是文本:
=SUMIFS(B2:B8, A2:A8, Drake White)技术支持
修复方法是将 Drake White 用引号括起,如下所示,即可得到正确输出:
=SUMIFS(B2:B8, A2:A8, "Drake White")技术支持
意外的零值
如果公式返回 0 而您期待有结果,可能是数值或日期条件的格式不正确。在 SUMIFS() 中,像 >100 或 <01-Jan-2023 这样的条件必须作为带引号的文本字符串书写。否则会返回错误或 0,因为条件没有用引号括起。
或者我们可以将日期存放在单独的单元格(例如 C1)中,并使用:
=SUMIFS(B2:B8, A2:A8, ">="&C1)技术支持
SUMIFS() 不支持的数组转换
SUMIFS() 不支持某些转换,例如在公式中对数据提取特定组成部分。比如,我想对一月与三月的销售额求和,SUMIFS() 不能直接用数组条件 {"January","March"} 实现。
为说明这一点,假设 A 列为月份(January、February、March、April),B 列为销售值(100、200、300、400)。公式
=SUMIFS(B2:B5, A2:A5, {"January","March"})技术支持
不会返回期望的 400(100 + 300)。我们可以改用 SUMPRODUCT():
=SUMPRODUCT((A2:A5={"January","March"})*B2:B5)技术支持
或用 SUM() 包裹 SUMIFS(),使用以下公式:
=SUM(SUMIFS(B2:B5, A2:A5, {"January","March"}))技术支持
这两种方案都能正确处理数组条件,并返回一月与三月销售额之和。
使用 SUMIFS() 的最佳实践
要最大化 SUMIFS() 的价值,我们需要遵循以下最佳实践,避免常见错误:
-
使用通配符实现灵活筛选:在筛选数据时建议使用通配符,因为数据有时并不完美规范。产品名可能拼写不一致,或存在多余空格。通配符可以在不要求精确文本匹配的情况下匹配模式。
-
避免硬编码条件:不要把条件直接写入公式,改为将其存放在单独的单元格中。如果您把条件如 "Drake White" 或 ">100" 硬编码在公式里,每次修改都要编辑公式;而使用单元格引用,公式会自动更新。
-
复制公式时使用绝对引用:当您把 SUMIFS() 公式复制到其他单元格时,Excel 会自动调整单元格引用。如果不希望如此,请通过添加 $ 来将单元格锁定为绝对引用。
结语
SUMIFS() 是一个帮助我们按条件筛选并求和的 Excel 函数。它非常适合按区域跟踪销售、按类别汇总支出、或按产品类型统计库存等任务。一旦熟练掌握 SUMIFS(),您就会发现它能节省时间,并帮助您在不借助复杂变通方法的情况下,从数据中发现重要趋势。
如果您想进一步提升相关技能,欢迎查看我们的 Data Analysis in Excel 课程、Data Preparation in Excel 课程与 Data Visualization in Excel 课程,或 Excel Fundamentals 技能路径。这些课程将帮助您巩固并提升现有技能。
Excel 中的
SUMIFS()函数可基于多个条件对数值求和,从而让我们对计算进行精确控制。与只检查一个条件的SUMIF()不同,SUMIFS()可以同时处理多个条件。在本文中,我将通过进阶示例与故障排查技巧,向您展示如何使用
SUMIFS()。读完之后,您将掌握如何用SUMIFS()让计算更准确、更高效。快速答案
在 Excel 中使用
SUMIFS()函数:输入
=SUMIFS(开始函数。选择包含要求和数值的区域。
选择要应用条件的区域。
输入要匹配的条件。
闭合括号并按下 Enter。
这里,我对所有大于 200 的销售额进行了求和。
使用 SUMIFS() 对数值求和。作者供图。
理解 SUMIFS() 函数
Excel 中的
SUMIFS()仅在满足所有指定条件时才对数值求和。它支持大于>、小于<、等于=、不等于<>等逻辑运算符,以及用于部分匹配的通配符。该函数可处理数字、文本和日期。SUMIFS() 的语法
SUMIFS()先指定要求和的数值区域,然后是成对出现的条件区域与条件。请注意,SUMIFS()可以处理多个逻辑条件。其中:
sum_range是您要相加的单元格区域。criteria_range1是我们检查条件的第一个区域。criteria1是应用于criteria_range1的条件。[criteria_range2, criteria2], …为可选。您可以添加更多成对的区域与条件。每一对都会增加一个必须满足的条件。请注意,
criteria_range(用于检查条件的区域)必须与sum_range(求和的区域)具有相同的行数与列数。SUMIFS() 示例
让我们尝试一个基础示例。我有一份包含水果、数量和销售额的数据集。我想找出“苹果”且数量大于 5 的总销售额。我的公式如下:
这里
C2:C8是要求和的区域(Sales ($))。A2:A8, "Apples"是只包含产品为苹果的行的条件。而B2:B8, ">5"是只包含数量超过 5 的行的条件。按条件汇总销售额的 SUMIFS() 公式。作者供图。
SUMIF() 与 SUMIFS()
SUMIF()与SUMIFS()的主要区别在于可用条件的数量。SUMIF()只处理单个条件,而SUMIFS()可处理多个条件。=SUMIF(range, criteria, [sum_range])=SUMIFS(sum_range, criteria_range1, criteria1, …)换个角度看,
SUMIFS()其实是SUMIF()的扩展。我之所以这么说,是因为SUMIFS()也能处理单个条件,因此当您只用一个条件时,它和SUMIF()的作用相同。这意味着选择SUMIFS()而不是SUMIF()从技术上说永远不会错。您可以参考我们的 Excel 公式速查表,了解更多值得掌握的 Excel 公式。Excel 中 SUMIFS() 的使用场景
既然您已经了解了
SUMIFS()的工作原理,让我们看看一些可应用于真实场景的进阶用法。将 SUMIFS() 用于不同数据类型
SUMIFS()可处理不同的数据类型,如数字、文本与日期。假设我有一份销售报告,但有些行缺少客户姓名。我想只对有客户姓名的行进行求和,为此我使用以下公式:该公式查看客户(Customer)列,检查非空单元格,然后汇总对应的销售额。
使用 SUMIFS() 对所有非空单元格求和。作者供图。
若要对缺少客户姓名的销售额求和,我使用此公式:
使用 SUMIFS() 对空白单元格求和。作者供图。
与其将条件硬编码,我们可以把条件存放在其他单元格中。若我想汇总 Sarah Lee 的销售额,我在 E3 单元格中输入该名字,并使用如下公式:
当 E3 中的值变化时,总计会自动更新。
使用单元格引用通过 SUMIFS() 求和。作者供图。
在 SUMIFS() 中应用 OR 逻辑
我们知道
SUMIFS()只使用AND逻辑,这意味着只有当我们设置的所有条件都为真时才会求和。然而,如果我们想用OR逻辑,即只要多个条件中任意一个满足就进行求和,则可以通过组合多个SUMIFS()来实现。例如,如果我想汇总 John Doe 或 Drake White 的销售额,我可以像这样组合两个
SUMIFS()公式:由于列表中没有 Drake White,公式的那一部分将返回
0。总计只包含 John Doe 的销售额,这也展示了OR逻辑的工作方式。在 SUMIFS() 中使用 OR 逻辑。作者供图。
在 Excel 365 或更高版本中,我们可以用数组公式简化,并得到相同结果。
使用 SUMIFS() 的数组公式。作者供图。
配合命名范围使用 SUMIFS()
我们还可以使用命名范围来替代像
A2:A5或C2:C5这样的单元格引用。在此示例中,我将A2:A5命名为Customer_list,将C2:C5命名为Sales_list。现在 要找出John 的总销售额,我使用如下公式:使用命名范围配合 SUMIFS() 求和。作者供图。
使用通配符进行部分匹配
通配符是特殊字符(
*或?),用于在文本搜索与模式匹配中表示未知或可变字符:*可匹配任意数量的字符(包括零个)。?精确匹配单个字符。它们的工作方式如下:
A*将匹配所有以 A 开头的单元格。*A将匹配所有以 A 结尾的单元格。*A*将匹配所有任意位置包含 A 的单元格。SUMIFS()通过通配符提供文本匹配功能。它可以识别以特定文本开头、结尾或包含特定文本模式的值。假设我想汇总产品代码以 ABC 开头的销售额,此时我的公式如下:若要汇总以
00结尾的销售额,在 SUMIFS() 中使用通配符。作者供图。
基于日期范围求和
SUMIFS()也可以在特定日期范围内求和。若我想知道 2023 年 1 月的所有销售额,我会使用以下公式:该公式将检查 2023 年 1 月 1 日到 2023 年 1 月 31 日的日期,并汇总所有销售额。
使用 SUMIFS() 对日期范围求和。作者供图。
基于多个数值条件求和
SUMIFS()可以对落在特定数值区间内的值进行求和。这里我有一组随机数据,想对销售额大于 100 且小于 300 的值求和。为此我使用以下公式:该公式首先将要求和的单元格区域(
C2:C5)作为第一个参数,然后对同一区域应用上述两个条件。SUMIFS()会同时根据两个条件评估区域中的每个单元格。您会看到只有介于 100 与 300 之间(不含端点)的单元格会被计入总和。使用 SUMIFS() 按数值区间求和。作者供图。
SUMIFS() 不工作时的排查
如果您的
SUMIFS()函数没有按预期工作,请检查以下问题:区域大小不匹配
若
SUMIFS()公式返回错误,可能是区域大小不匹配所致。在SUMIFS()中,您选择的所有区域,如sum_range与各个criteria_ranges,都必须具有相同的行数与列数。例如,在这个公式中,求和区域是
B2:B8,而条件区域是A2:A7,比前者少一行:这种不匹配会产生
#VALUE!错误。因此,请确保所有区域大小一致,如下所示:文本条件格式不正确
在
SUMIFS()中,文本条件必须放在引号内。否则可能得到不正确的结果。例如,这个公式将返回0因为 Excel 会将 Drake White 视为名称或变量,而不是文本:修复方法是将 Drake White 用引号括起,如下所示,即可得到正确输出:
意外的零值
如果公式返回
0而您期待有结果,可能是数值或日期条件的格式不正确。在SUMIFS()中,像>100或<01-Jan-2023这样的条件必须作为带引号的文本字符串书写。否则会返回错误或0,因为条件没有用引号括起。或者我们可以将日期存放在单独的单元格(例如
C1)中,并使用:SUMIFS() 不支持的数组转换
SUMIFS()不支持某些转换,例如在公式中对数据提取特定组成部分。比如,我想对一月与三月的销售额求和,SUMIFS()不能直接用数组条件 {"January","March"} 实现。为说明这一点,假设 A 列为月份(January、February、March、April),B 列为销售值(100、200、300、400)。公式
不会返回期望的 400(100 + 300)。我们可以改用
SUMPRODUCT():或用
SUM()包裹SUMIFS(),使用以下公式:这两种方案都能正确处理数组条件,并返回一月与三月销售额之和。
使用 SUMIFS() 的最佳实践
要最大化
SUMIFS()的价值,我们需要遵循以下最佳实践,避免常见错误:使用通配符实现灵活筛选:在筛选数据时建议使用通配符,因为数据有时并不完美规范。产品名可能拼写不一致,或存在多余空格。通配符可以在不要求精确文本匹配的情况下匹配模式。
避免硬编码条件:不要把条件直接写入公式,改为将其存放在单独的单元格中。如果您把条件如 "Drake White" 或 ">100" 硬编码在公式里,每次修改都要编辑公式;而使用单元格引用,公式会自动更新。
复制公式时使用绝对引用:当您把
SUMIFS()公式复制到其他单元格时,Excel 会自动调整单元格引用。如果不希望如此,请通过添加$来将单元格锁定为绝对引用。结语
SUMIFS()是一个帮助我们按条件筛选并求和的 Excel 函数。它非常适合按区域跟踪销售、按类别汇总支出、或按产品类型统计库存等任务。一旦熟练掌握SUMIFS(),您就会发现它能节省时间,并帮助您在不借助复杂变通方法的情况下,从数据中发现重要趋势。如果您想进一步提升相关技能,欢迎查看我们的 Data Analysis in Excel 课程、Data Preparation in Excel 课程与 Data Visualization in Excel 课程,或 Excel Fundamentals 技能路径。这些课程将帮助您巩固并提升现有技能。