Excel的SUMIFS和SUMIF有多个标准--公式示例

  • Share This
Michael Brown

本教程解释了SUMIF和SUMIFS函数在语法和用法上的区别,并提供了一些公式实例,以在Excel 365、2021、2019、2016、2013、2010和低版本中对具有多个AND/OR条件的值进行求和。

众所周知,Microsoft Excel提供了一系列函数来对数据进行各种计算。 几篇文章之前,我们探讨了COUNTIF和COUNTIFS,它们分别用于根据单个条件和多个条件对单元格进行计数。 上周我们介绍了Excel的SUMIF,它将符合指定条件的数值相加。 现在是时候介绍一下复数版本的SUMIF - Excel的SUMIFS,允许按多个标准对数值进行求和。

熟悉SUMIF函数的人可能会认为,将其转换为SUMIFS只需要一个额外的 "S "和一些额外的条件。 这似乎很合乎逻辑......但在与微软打交道时,"合乎逻辑 "并不总是如此 :)

    Excel SUMIF函数--语法& 使用方法

    SUMIF函数用于有条件地对数值进行求和,基于一个 单一标准 我们在上一篇文章中详细讨论了SUMIF语法,这里只是快速复习一下。

    SUMIF(range, criteria, [sum_range])
    • 范围 - 你的标准要评估的单元格范围,需要。
    • 标准 - 必须满足的条件,要求。
    • 总数_范围 - 如果满足条件,要加的单元格,可选。

    正如你所看到的,Excel SUMIF函数的语法只允许一个条件。 而我们仍然说,Excel SUMIF可以用来对具有多个条件的值进行求和。 这怎么可能呢? 通过添加几个SUMIF函数的结果和使用具有数组条件的SUMIF公式,正如在下面的例子中所展示的。

    Excel SUMIFS函数--语法& 使用方法

    你在Excel中使用SUMIFS来 根据多个标准找到一个有条件的数值之和 .SUMIFS函数是在Excel 2007中引入的,在Excel 2010、2013、2016、2019、2021和Excel 365的所有后续版本中都可用。

    与SUMIF相比,SUMIFS的语法要复杂一些。

    SUMIFS(sum_range, criteria_range1, criteria1, [critical_range2, criteria2], ...)

    前3个参数是必须的,其他的范围和它们的相关标准是可选的。

    • 总数_范围 - 一个或多个需要求和的单元格,可以是一个单元格、一个单元格区域或一个命名的区域。 只有带数字的单元格才会被求和;空白和文本值被忽略。
    • 标准_范围1 - 第一个要被相关标准评估的范围,需要。
    • 标准1 - 你可以以数字、逻辑表达式、单元格引用、文本或其他Excel函数的形式提供标准。 例如,你可以使用10、">=10"、A1、"樱桃 "或TODAY()等标准。
    • criteria_range2, criteria2, ...。 - 你可以在SUMIFS公式中最多使用127个范围/标准对,这些是额外的范围和与之相关的标准,是可选的。

    注意事项。

    • 为了使SUMIFS公式正常工作,所有的 标准_范围 参数的尺寸必须与 总数_范围 ,即相同的行和列的数量。
    • SUMIFS函数采用AND逻辑工作,这意味着只有在满足所有指定条件的情况下,才对求和范围内的单元格进行求和,即所有条件对该单元格都是真实的。

    基本的SUMIFS公式

    现在,让我们来看看Excel的SUMIFS公式中的两个条件。 假设,你有一个表格,列出了来自不同供应商的水果托运。 你在A列有水果名称,B列有供应商名称,C列有数量。你想要的是找出与特定水果和供应商有关的金额之和,例如,Pete提供的所有苹果。

    当你学习新的东西时,从简单的东西开始总是一个好主意。 因此,首先,让我们定义SUMIFS公式的所有参数。

    • sum_range - C2:C9
    • criteria_range1 - A2:A9
    • criteria1 - "苹果"
    • criteria_range2 - B2:B9
    • criteria2 - "Pete"

    现在将上述参数组合起来,你将得到以下SUMIFS公式。

    =SUMIFS(C2:C9, A2:A9, "苹果", B2:B9, "彼得")

    为了进一步完善公式,你可以用单元格引用代替文本标准 "苹果 "和 "皮特"。 在这种情况下,你将不必改变公式来计算来自不同供应商的其他水果的数量。

    =sumifs(c2:c9, a2:a9, f1, b2:b9, f2)

    注意:SUMIF 和 SUMIFS 函数本质上是不区分大小写的。 要让它们识别文本大小写,请参见 Excel 中区分大小写的 SUMIF 和 SUMIFS 公式。

    Excel中的SUMIF与SUMIFS

    由于本教程的目的是涵盖按多个条件求和的所有可能方法,我们将讨论这两个函数的公式示例--Excel SUMIFS和SUMIF与多个条件。 为了正确使用它们,你需要清楚地了解这两个函数的共同点和它们的不同点。

    虽然共同的部分很清楚(类似的目的和参数),但差异并不那么明显,尽管非常重要。

    SUMIF和SUMIFS之间有4个主要区别。

    1. 条件的数量 . SUMIF一次只能评估一个条件,而SUMIFS可以检查多个条件。
    2. 语法 通过SUMIF, 总数_范围 是最后一个参数,也是可选的参数--如果没有定义,在 范围 有了SUMIFS,就会对参数进行求和。 总数_范围 是第一个也是必须的参数。
    3. 范围的大小。 在SUMIF公式中。 总数_范围 范围 在Excel的SUMIFS中,每个 标准_范围 必须包含与之相同数量的行和列。 总数_范围 争论。

      例如,SUMIF(A2:A9,F1,C2:C18)将返回正确的结果,因为在这些单元格中最左边的 总数_范围 因此,Excel会自动进行修正,并在 "数据 "中包含尽可能多的列和行。 总数_范围 如同在 范围 .

      具有不平等大小范围的SUMIFS公式将返回一个#VALUE!错误。

    4. 可利用性 .SUMIF在所有的Excel版本中都可用,从365到2000。 SUMIFS在Excel 2007和更高版本中可用。

    好了,战略(即理论)够了,让我们进入战术(即公式例子:)。

    如何在Excel中使用SUMIFS--公式示例

    刚才,我们讨论了一个带有两个文本标准的简单SUMIFS公式。 以同样的方式,你可以用数字、日期、逻辑表达式和其他Excel函数表示的多个标准来使用Excel SUMIFS。

    例1.带有比较运算符的Excel SUMIFS

    在我们的水果供应商表中,假设,你想把所有数量在200以上的Mike的交货量相加。 要做到这一点,你在criteria2中使用比较运算符 "大于或等于"(>=),得到以下SUMIFS公式。

    =SUMIFS(C2:C9,B2:B9,"Mike",C2:C9,">=200")

    注意:请注意,在Excel的SUMIFS公式中,带有比较运算符的逻辑表达式应始终用双引号("")括起来。

    在讨论Excel的SUMIF函数时,我们详细介绍了所有可能的比较运算符,同样的运算符也可以用于SUMIFS标准。 例如,下面的公式可以返回单元格C2:C9中大于或等于200且小于或等于300的所有值的总和。

    =SUMIFS(C2:C9, C2:C9, ">=200", C2:C9, "<=300")

    例2.使用Excel的日期SUMIFS

    如果你想根据当前日期对多个标准的值进行求和,请在你的SUMIFS标准中使用TODAY()函数,如下图所示。 如果C列中的相应日期在过去7天内,包括今天,下面的公式将D列中的值进行求和。

    =SUMIFS(D2:D10, C2:C10,">="&TODAY()-7, C2:C10,"<="&TODAY())

    注意:当你在标准中使用另一个Excel函数和一个逻辑运算符时,你必须使用安培号(&)来连接一个字符串,例如"<="&TODAY()。

    以类似的方式,你可以使用Excel的SUMIF函数对给定日期范围内的数值进行求和。 例如,如果B列中的日期在2014年10月1日至2014年10月31日(含)之间,下面的SUMIFS公式将单元格C2:C9中的数值相加。

    =SUMIFS(C2:C9, B2:B9, ">=10/1/2014", B2:B9, "<=10/31/2014" )

    通过计算两个SUMIF函数的差值也可以得到同样的结果,正如这个例子所演示的那样--如何使用SUMIF对给定日期范围内的数值进行求和。 然而,Excel的SUMIFS要简单得多,也更容易理解,不是吗?

    例3.带有空白和非空白单元格的Excel SUMIFS

    在分析报告和其他数据时,你可能经常需要对空或非空单元格对应的数值进行求和。

    标准 描述 公式示例
    空白单元格 "=" 对应于空白单元格的和值,绝对不包含任何内容--没有公式,没有零长度的字符串。 =sumifs(c2:c10, a2:a10, "=", b2:b10, "=")

    如果A列和B列中的相应单元格绝对是空的,那么C2:C10单元格中的数值之和。 "" 与 "视觉上 "的空白单元格相对应的数值,包括那些由其他Excel函数返回的包含空字符串的单元格(例如,具有类似公式的单元格)。 =sumifs(c2:c10, a2:a10, "", b2:b10, "" )

    将C2:C10单元格中的数值相加,条件与上述公式相同,但包括空字符串。 非空白细胞 "" 与非空单元格相对应的数值之和,包括零长度字符串。 =sumifs(c2:c10, a2:a10, "", b2:b10, "" )

    如果A列和B列中的相应单元格不为空,则对C2:C10单元格中的数值进行求和,包括带有空字符串的单元格。 SUM-SUMIF

    SUM / LEN 与非空单元格相对应的数值之和,不包括零长度字符串。 =sum(c2:c10) - sumifs(c2:c10, a2:a10, "", b2:b10, "" )

    =SUM((C2:C10) * (LEN(A2:A10)>0)*(LEN(B2:B10)>0))

    如果A列和B列中的相应单元格不为空,则对C2:C10单元格中的数值进行求和,零长度字符串的单元格不包括在内。

    现在,让我们看看如何在真实数据上使用带有 "空白 "和 "非空白 "条件的SUMIFS公式。

    假设B列有订单日期,C列有交货日期,D列有数量,如何找到尚未交货的产品总数? 也就是说,你想知道B列非空单元格和C列空单元格对应的数值之和。

    解决办法是使用带有2个标准的SUMIFS公式。

    =sumifs(d2:d10, b2:b10,"", c2:c10, "=")

    使用Excel的SUMIF与多个OR标准

    正如本教程开头所指出的,SUMIFS函数是用AND逻辑设计的。 但如果你需要对具有多个OR条件的值进行求和,即至少有一个条件被满足时,该怎么办?

    例1.SUMIF + SUMIF

    最简单的解决方案是将几个SUMIF函数返回的结果相加。 例如,下面的公式演示了如何找到Mike和John交付的产品的总数。

    =SUMIF(C2:C9, "Mike",D2:D9) + SUMIF(C2:C9, "John",D2:D9)

    正如你所看到的,第一个SUMIF函数添加了与 "Mike "对应的数量,另一个SUMIF函数返回与 "John "相关的数量,然后你将这两个数字相加。

    例2.带数组参数的SUM & SUMIF

    上面的解决方案非常简单,当只有几个条件时,可以快速完成工作。 但如果你想对有多个OR条件的值进行求和,SUMIF+SUMIF公式可能会大大增加。 在这种情况下,更好的方法是使用一个 阵列标准 现在让我们研究一下这种方法。

    你可以先把所有的条件用逗号隔开,然后把得到的逗号隔开的列表用{大括号}括起来,这在技术上叫做数组。

    在前面的例子中,如果你想对John、Mike和Pete交付的产品进行求和,你的数组条件将看起来像{"John"、"Mike"、"Pete"}。 而完整的SUMIF函数是 SUMIF(C2:C9, {"John", "Mike", "Pete"} ,D2:D9) .

    由3个值组成的数组参数迫使你的SUMIF公式返回三个独立的结果,但由于我们在一个单元格中写公式,它将只返回第一个结果--即约翰交付的产品总数。 为了使这种数组标准的方法发挥作用,你必须使用一个小技巧--将你的SUMIF公式包含在一个SUM函数中,像这样。

    =SUM(SUMIF(C2:C9, {"John", "Mike", "Pete"} , D2:D9) )

    正如你所看到的,与SUMIF+SUMIF相比,数组标准使公式更加紧凑,并允许你在数组中添加任意多的值。

    这种方法既适用于数字,也适用于文本值。 例如,如果C列中没有供应商的名字,而是有供应商的ID,如1、2、3等,那么你的SUMIF公式将类似于这样。

    =sum(sumif(c2:c9, {1,2,3} , d2:d9))

    与文本值不同,数字在数组参数中不需要用双引号括起来。

    例3.SUMPRODUCT & SUMIF

    如果你喜欢在一些单元格中列出标准,而不是直接在公式中指定它们,你可以将SUMIF与SUMPRODUCT函数结合使用,后者将给定数组中的组件相乘,并返回这些产物的总和。

    =sumproduct(sumif(c2:c9, g2:g4, d2:d9))

    其中G2:G4是包含你的标准的单元格,在我们的例子中是供应商的名字,如下面的截图所示。

    但当然,如果你想的话,没有什么能阻止你将数值列在SUMIF函数的数组标准中。

    =SUMPRODUCT(SUMIF(C2:C9, {"Mike", "John", "Pete"}, D2:D9) )

    两个公式返回的结果将与你在截图中看到的相同。

    具有多个OR条件的Excel SUMIFS

    如果你想在Excel中不是简单地用多个OR条件来求和,而是用几组条件来求和,你将不得不使用SUMIFS而不是SUMIF。 其公式将与我们刚才讨论的非常相似。

    像往常一样,一个例子可能有助于更好地说明这个问题。 在我们的水果供应商表中,让我们加上交货日期(E列),并找出迈克、约翰和皮特在10月份的总交货量。

    例1.SUMIFS + SUMIFS

    这种方法产生的公式包括大量的重复,看起来很繁琐,但它很容易理解,最重要的是,它很有效 :)

    =SUMIFS(D2:D9,C2:C9, "Mike", E2:E9, ">=10/1/2014", E2:E9, "<=10/31/2014") +

    SUMIFS(D2:D9, C2:C9, "John", E2:E9, ">=10/1/2014", E2:E9, "<=10/31/2014" ) +

    SUMIFS(D2:D9, C2:C9, "Pete", E2:E9, ">=10/1/2014" ,E2:E9, "<=10/31/2014" )

    正如你所看到的,你为每个供应商写一个单独的SUMIFS函数,并包括两个条件--等于或大于10月1日(">=10/1/2014",)和小于或等于10月31日("<=10/31/2014"),然后你将结果相加。

    例2.带数组参数的SUM & SUMIFS

    我已经试图在SUMIF的例子中解释这种方法的精髓,所以现在我们可以简单地复制这个公式,改变参数的顺序(正如你所记得的,在SUMIF和SUMIFS中是不同的),并添加额外的条件。 结果公式比SUMIFS + SUMIFS更紧凑。

    =SUM(SUMIFS(D2:D9,C2:C9, {"Mike", "John", "Pete"}, E2:E9, ">=10/1/2014", E2:E9, "<=10/31/2014")

    这个公式返回的结果与你在上面的截图中看到的完全一样。

    例3.SUMPRODUCT & SUMIFS

    正如你所记得的,SUMPRODUCT方法与前两种方法不同,你要在一个单独的单元格中输入每个标准,而不是直接在公式中指定它们。 如果有几个标准集,SUMPRODUCT函数是不够的,你将不得不使用ISNUMBER和MATCH。

    因此,假设用品名称在H1:H3单元格,开始日期在H4单元格,结束日期在H5单元格,我们的SUMPRODUCT公式的形状如下。

    =SUMPRODUCT(--(E2:E9>=H4), --(E2:E9<=H5), --(ISNUMBER(MATCH(C2:C9, H1:H3,0)), D2:D9)

    很多人不明白为什么要在SUMPRODUCT公式中使用双破折号(--)。 关键是,Excel SUMPRODUCT忽略了除数字以外的所有数值,而我们公式中的比较运算符返回布尔值(TRUE/FALSE),这是非数字的。 为了将这些布尔值转换为1和0,你使用双减号,技术上称为双单运算符。 第一个单运算符强制执行第二个单数否定了这些值,即颠倒了符号,把它们变成+1和0,这是SUMPRODUCT函数可以理解的。

    我希望上面的解释是有意义的。 即使没有,也要记住这个经验法则--当你在SUMPRODUCT公式中使用比较运算符时,使用双单数运算符(--)。

    在数组公式中使用Excel SUM

    正如你所记得的,微软在Excel 2007中实现了SUMIFS函数。 如果有人仍然使用Excel 2003、2000或更早的版本,你将不得不使用SUM数组公式来添加具有多个AND条件的值。 当然,这种方法在Excel 2013 - 2007的现代版本中也适用,可以认为是SUMIFS函数的老式对应。

    在上面讨论的SUMIF公式中,你已经使用了数组参数,但数组公式是不同的东西。

    例1.在Excel 2003和更早的版本中用多个和条件求和

    让我们回到最开始的例子,我们发现了与某个水果和供应商有关的金额总和。

    正如你已经知道的,使用普通的SUMIFS公式可以很容易地完成这项任务。

    =SUMIFS(C2:C9, A2:A9, "苹果", B2:B9, "彼得")

    现在,让我们看看如何在早期的 "无SUMIFS "版本的Excel中完成同样的任务。 首先,你以range="condition "的形式写下所有应该满足的条件。 在这个例子中,我们有两个范围/条件对。

    条件1:A2:A9="苹果"

    条件2:B2:B9="Pete"

    然后,你写一个SUM公式,"乘以 "你所有的范围/条件对,每个都用括号括起来。 最后的乘数是范围之和,在我们的例子中是C2:C9。

    =SUM((A2:A9="苹果") * ( B2:B9="彼得") * ( C2:C9)

    如下面的截图所示,该公式在最新的Excel 2013版本中完美运行。

    注意:当输入任何数组公式时,你必须按Ctrl + Shift + Enter 。 一旦你这样做,你的公式会被括在{大括号}中,这是一个视觉指示,表明数组公式输入正确。 如果你尝试手动输入大括号,你的公式会被转换成一个文本字符串,它不会工作。

    例2.现代Excel版本中的SUM数组公式

    即使在现代版本的Excel中,也不应该低估SUM函数的威力。 SUM数组公式不是简单的思维体操,而是具有实用价值的,下面的例子就证明了这一点。

    假设你有两列,B和C,你需要计算当C列的一个值大于或等于10时,C列大于B列的次数。

    =SUM((C1:C10>=10) * (C1:C10>B1:B10))

    没有看到上述公式的实际应用吗? 用另一种方式思考吧 : )

    假设你有如下截图所示的订单列表,你想知道有多少产品在某一特定日期前没有全部交付。 翻译成Excel的语言,我们有如下条件。

    条件1:B列(排序项目)中的一个值大于0

    条件2:C列(已交付)中的数值小于B列的数值

    条件3:D栏(到期日)中的一个日期小于11/1/2014。

    把这三个范围/条件对放在一起,你会得到以下公式。

    =SUM((B2:B10>=0)*(B2:B10>C2:C10)*(D2:D10

    好了,本教程中讨论的公式例子只是触及了Excel SUMIFS和SUMIF函数的真正作用,但希望它们能为你指明正确的方向,现在你可以在Excel工作簿中求和,无论你要考虑多少复杂的条件。

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.