假设我有一个包含2列的excel表:单元格A1到A10中的日期和B1到B10中的值。
我想总结五月日期的所有值。我有3种可能性:
{=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))
使用的最佳配方是什么?在这种情况下?为什么?
我找到了关于最后两个公式的答案,但没有关于第一个公式的答案。
答案 0 :(得分:2)
第一个和第二个(SUM和SUMPRODUCT)是数组类型公式;它们会在范围内迭代,这很慢,如果太多会导致计算速度变慢甚至崩溃,那就更好了。
第三个不是数组类型公式并且已经过优化,因此可以使用完整的列引用而不会影响速度。
当使用SUMIFS时,建议使用它。
答案 1 :(得分:2)
如果B1:B10
包含任何文本值,第一个公式会给您一个错误,第二个公式将不会(它将忽略B1:B10
中的文本)。您可以通过切换到以下语法来更改第一个允许B1:B10中的文本:
=SUM(IF(MONTH(A1:A10)=6;B1:B10))
如果A1:A10
包含文本,前两个公式也会给出错误 - SUMIFS
不会,并且还可以处理这些范围内的错误值(只要不在和范围内)在满足条件的行上
出于这些原因,SUMIFS
比斯科特说的更好,更快。
SUMIFS
的缺点:
无法使用已关闭的工作簿 - 不太灵活,因为它无法接受数组,因此您无法使用范围上的函数
在您的具体示例SUMIFS
中,仅对6月 2016 的金额求和。前两个公式将为任何年份中的任何六月日期求和,以便在某些情况下灵活性可能更适合您