跳至主要内容

Excel 中的 SUMIFS() 函数:按多个条件求和

Excel 中的 SUMIFS() 函数可对满足多个条件的值进行求和,适用于包含数字、日期与文本的条件计算。通过语法、示例与最佳实践掌握其用法。
· 8分钟 阅读

使用 AI 探索

Excel 中的 SUMIFS() 函数可基于多个条件对数值求和,从而让我们对计算进行精确控制。与只检查一个条件的 SUMIF() 不同,SUMIFS() 可以同时处理多个条件。

在本文中,我将通过进阶示例与故障排查技巧,向您展示如何使用 SUMIFS()。读完之后,您将掌握如何用 SUMIFS() 让计算更准确、更高效。

快速答案

在 Excel 中使用 SUMIFS() 函数:

  • 输入 =SUMIFS( 开始函数。

  • 选择包含要求和数值的区域。

  • 选择要应用条件的区域。

  • 输入要匹配的条件。

  • 闭合括号并按下 Enter。

这里,我对所有大于 200 的销售额进行了求和。

=SUMIFS(B2:B8, B2:B8, ">200")

在 Excel 中使用 SUMIFS 对数值求和。

使用 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 的行的条件。

在 Excel 中基于条件使用 SUMIFS 汇总销售额。

按条件汇总销售额的 SUMIFS() 公式。作者供图。

SUMIF() 与 SUMIFS()

SUMIF() 与 SUMIFS() 的主要区别在于可用条件的数量。SUMIF() 只处理单个条件,而 SUMIFS() 可处理多个条件。

FeatureSUMIF()SUMIFS()
Number of conditionsSingle condition onlyMultiple conditions (up to 127)
Logic typeSimple filteringAND logic (all conditions must be met)
Syntax=SUMIF(range, criteria, [sum_range])=SUMIFS(sum_range, criteria_range1, criteria1, …)
Argument orderCriteria range first, sum range lastSum range first, followed by criteria pairs
Best used forSimple filtering tasksComplex data analysis with multiple criteria

换个角度看,SUMIFS() 其实是 SUMIF() 的扩展。我之所以这么说,是因为 SUMIFS() 也能处理单个条件,因此当您只用一个条件时,它和 SUMIF() 的作用相同。这意味着选择 SUMIFS() 而不是 SUMIF() 从技术上说永远不会错。您可以参考我们的 Excel 公式速查表,了解更多值得掌握的 Excel 公式。

Excel 中 SUMIFS() 的使用场景

既然您已经了解了 SUMIFS() 的工作原理,让我们看看一些可应用于真实场景的进阶用法。

将 SUMIFS() 用于不同数据类型

SUMIFS() 可处理不同的数据类型,如数字、文本与日期。假设我有一份销售报告,但有些行缺少客户姓名。我想只对有客户姓名的行进行求和,为此我使用以下公式:

=SUMIFS(C2:C5, A2:A5, "<>")

该公式查看客户(Customer)列,检查非空单元格,然后汇总对应的销售额。

在 Excel 中使用 SUMIFS() 对所有非空单元格求和。

使用 SUMIFS() 对所有非空单元格求和。作者供图。

若要对缺少客户姓名的销售额求和,我使用此公式:

=SUMIFS(C2:C10, A2:A10, "", B2:B10, "")

在 Excel 中使用 SUMIFS() 对所有空白单元格求和。

使用 SUMIFS() 对空白单元格求和。作者供图。

与其将条件硬编码,我们可以把条件存放在其他单元格中。若我想汇总 Sarah Lee 的销售额,我在 E3 单元格中输入该名字,并使用如下公式:

=SUMIFS(C2:C5, A2:A5, E3)

当 E3 中的值变化时,总计会自动更新。

在 Excel 中使用 SUMIFS() 通过单元格引用进行求和。

使用单元格引用通过 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 逻辑的工作方式。

在 Excel 的 SUMIFS() 中实现 OR 逻辑。

在 SUMIFS() 中使用 OR 逻辑。作者供图。

在 Excel 365 或更高版本中,我们可以用数组公式简化,并得到相同结果。

=SUMIFS(C2:C8,A2:A8,{"John Doe","Drake White"})

在 Excel 中将数组公式用于 SUMIFS()。

使用 SUMIFS() 的数组公式。作者供图。

配合命名范围使用 SUMIFS()

我们还可以使用命名范围来替代像 A2:A5 或 C2:C5 这样的单元格引用。在此示例中,我将 A2:A5 命名为 Customer_list,将 C2:C5 命名为 Sales_list。现在 要找出John 的总销售额,我使用如下公式:

=SUMIFS(Sales_list, Customer_list, "John")

在 Excel 中使用命名范围配合 SUMIFS() 进行求和。

使用命名范围配合 SUMIFS() 求和。作者供图。

使用通配符进行部分匹配

通配符是特殊字符(* 或 ?),用于在文本搜索与模式匹配中表示未知或可变字符:

  • * 可匹配任意数量的字符(包括零个)。

  • ? 精确匹配单个字符。

它们的工作方式如下:

  • A* 将匹配所有以 A 开头的单元格。

  • *A 将匹配所有以 A 结尾的单元格。

  • *A* 将匹配所有任意位置包含 A 的单元格。

SUMIFS() 通过通配符提供文本匹配功能。它可以识别以特定文本开头、结尾或包含特定文本模式的值。假设我想汇总产品代码以 ABC 开头的销售额,此时我的公式如下:

=SUMIFS(D2:D8, C2:C8, "ABC*")

若要汇总以 00 结尾的销售额,

=SUMIFS(B2:B7, A2:A7, "*00")

在 Excel 的 SUMIFS 函数中使用通配符汇总数值

在 SUMIFS() 中使用通配符。作者供图。

基于日期范围求和

SUMIFS() 也可以在特定日期范围内求和。若我想知道 2023 年 1 月的所有销售额,我会使用以下公式:

=SUMIFS(D2:D8, B2:B8, ">=01-Jan-2023", B2:B8, "<=31-Jan-2023") 

该公式将检查 2023 年 1 月 1 日到 2023 年 1 月 31 日的日期,并汇总所有销售额。

在 Excel 中使用 SUMIFS() 对日期范围求和。

使用 SUMIFS() 对日期范围求和。作者供图。

基于多个数值条件求和

SUMIFS() 可以对落在特定数值区间内的值进行求和。这里我有一组随机数据,想对销售额大于 100 且小于 300 的值求和。为此我使用以下公式:

=SUMIFS(C2:C5, C2:C5, ">100", C2:C5, "<300")

该公式首先将要求和的单元格区域(C2:C5)作为第一个参数,然后对同一区域应用上述两个条件。SUMIFS() 会同时根据两个条件评估区域中的每个单元格。您会看到只有介于 100 与 300 之间(不含端点)的单元格会被计入总和。

在 Excel 中使用 SUMIFS() 按数值区间求和。

使用 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 技能路径。这些课程将帮助您巩固并提升现有技能。

Laiba Siddiqui

作者

Laiba Siddiqui

我是内容策略专家,热衷于将复杂主题化繁为简。我曾帮助 Splunk、Hackernoon 和 Tiiny Host 等公司为其受众打造兼具吸引力与信息量的内容。

SUMIFS() 常见问答

如何从数据集中排除特定条件?

若要排除特定条件,请像这样使用 <> 运算符:

=SUMIFS(B2:B8, A2:A8, "<>March")

这将排除 March 对应的列,汇总其余数据。

如何汇总最高或最低的 N 个值?

您可以将 SUM() 与 SMALL() 结合来汇总最高或最低的 N 个值,例如:

=SUM(SMALL(B2:B8, {1,2,3}))

用于求和最小的 3 个值。

=SUM(LARGE(B2:B8, {1,2,3}))

用于求和最大的 3 个值。

`SUMIFS()` 能区分大小写吗?

不可以,SUMIFS() 不区分大小写。如果需要区分大小写,可结合 SUMPRODUCT() 与 EXACT() 的数组公式,例如:

SUMPRODUCT(--(EXACT(criteria, range)), sum_range)

我能用 `SUMIFS()` 在 Excel 中每隔一行求和吗?

要每隔一行求和,可先创建辅助列:

  • 在该列输入:=MOD(ROW(), 2)=0
  • 然后汇总对应的行:

=SUMIFS(B2:B8, C2:C8, TRUE)

您也可以使用 SUMPRODUCT() 与 FILTER() 的方法:

=SUMPRODUCT((MOD(ROW(B2:B8), 2)=0) * B2:B8)

如果使用的是 Excel 365 或更高版本

=SUM(FILTER(B2:B8, MOD(ROW(B2:B8), 2)=0))

主题