Excel SUMIF(条件,值)、SUMPROD(条件,值)和SUM(条件*值)之间的差异

Excel SUMIF(条件,值)、SUMPROD(条件,值)和SUM(条件*值)之间的差异,excel,excel-formula,Excel,Excel Formula,假设我有一个excel表格,有两列:单元格A1到A10中的日期和B1到B10中的值 我想把五月日期的所有数值加起来。我有3种可能: {=SUM((月(A1:A10)=6)*(B1:B10))} 或 或 =SUMIFS(B1:B10;A1:A10;“>=”&DATE(2016;6;1);A1:A10;“第一个和第二个(SUM和SUMPRODUCT)是数组类型的公式;它们将在整个范围内迭代,这很慢,如果太多会导致计算速度减慢,甚至会使excel崩溃 第三个不是数组类型的公式,已经过优化,因此可以使用

假设我有一个excel表格,有两列:单元格A1到A10中的日期和B1到B10中的值

我想把五月日期的所有数值加起来。我有3种可能:

{=SUM((月(A1:A10)=6)*(B1:B10))}

=SUMIFS(B1:B10;A1:A10;“>=”&DATE(2016;6;1);A1:A10;“第一个和第二个(SUM和SUMPRODUCT)是数组类型的公式;它们将在整个范围内迭代,这很慢,如果太多会导致计算速度减慢,甚至会使excel崩溃

第三个不是数组类型的公式,已经过优化,因此可以使用全列引用而不会影响速度


当可以使用SUMIFS时,建议使用它。

如果
B1:B10
包含任何文本值,则第一个公式会给您一个错误,而第二个公式不会(它只会忽略
B1:B10
中的文本)。您可以通过切换到以下语法,将第一个公式更改为允许B1:B10中的文本:

=总和(如果(月份(A1:A10)=6;B1:B10))

如果
A1:A10
包含文本,
SUMIFS
不会并且也可以处理这些范围内的错误值(只要不在满足条件的行的总和范围内),前两个公式也会给您一个错误

由于这些原因,正如斯科特所说,SUMIFS更好更快

SUMIFS的缺点

无法使用封闭工作簿-灵活性较低,因为它不能接受数组,因此不能在范围上使用函数


在您的具体示例中,
SUMIFS
仅对2016年6月的金额进行求和。前两个公式将对任何一年的任何6月日期进行求和,因此在某些情况下,灵活性可能更适合您

谢谢。因此,前两个公式的唯一优点是它们可以针对封闭的工作簿?是吗第一个和第二个有什么区别吗?第一个和第二个没有区别,据我所知,SUMIFS可以指向一个封闭的工作簿。SUMIF/SUMIFS/COUNTIFS等不能用于封闭的工作簿
=SUMPRODUCT((MONTH(A1:A10)=6)+0;B1:B10)
=SUMIFS(B1:B10;A1:A10;">="&DATE(2016;6;1);A1:A10;"<="&DATE(2016;6;30))