SUMIF(条件,值),SUMPROD(条件,值)和SUM(条件*值)之间的区别

比方说,我有一个Excel表格有两列:单元格A1到A10中的date和B1到B10中的值。

我想总结5月份date的所有值。 我有三种可能性:

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

要么

 =SUMPRODUCT((MONTH(A1:A10)=6)+0;B1:B10) 

要么

 =SUMIFS(B1:B10;A1:A10;">="&DATE(2016;6;1);A1:A10;"<="&DATE(2016;6;30)) 

什么是最好的公式使用? 在这种情况下? 为什么?

我已经find了关于最后两个公式的答案,但没有任何关于第一个。

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

=SUM(IF(MONTH(A1:A10)=6;B1:B10))

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

由于这些原因, SUMIFS比Scott更好,速度更快。

SUMIFS缺点:

无法使用封闭式工作簿 – 灵活性较差,无法接受数组,因此无法使用范围中的函数

在您的具体示例中, SUMIFS仅对2016年 6 月的金额进行了总计。 前两个公式将在任何一年的任何六月份date中进行总结,以便在某些情况下灵活性可能更适合您

第一个和第二个(SUM和SUMPRODUCT)是数组types的公式; 他们会遍历整个范围,这很慢,如果太多,会导致计算速度减慢,甚至崩溃excel。

第三个不是数组types的公式,并且已经被优化,因此可以使用满列引用而不会影响速度。

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