【问题标题】:Difference between SUMIF(Condition, Values), SUMPROD(Condition, Values) and SUM(Condition*Values)SUM IF(Condition, Values), SUMPRODUCT(Condition, Values) 和 SUM(Condition*Values) 的区别
【发布时间】:2017-12-12 02:59:19
【问题描述】:

假设我有一个包含 2 列的 Excel 表格:单元格 A1 到 A10 中的日期和 B1 到 B10 中的值。

我想总结 5 月日期的所有值。我有 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))

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

我找到了关于最后两个公式的答案,但没有找到关于第一个公式的答案。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

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

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

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

    出于这些原因,SUMIFS 正如 Scott 所说的更好、更快。

    SUMIFS的缺点:

    不能使用封闭的工作簿 - 不太灵活,因为它不能接受数组,所以你不能在范围内使用函数

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

    【讨论】:

      【解决方案2】:

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

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

      如果可以使用 SUMIFS,建议使用它。

      【讨论】:

      • 谢谢。那么前两个公式的唯一优点是它们可以针对封闭的工作簿? 1号和2号有区别吗?
      • 第一个和第二个没有区别,据我所知SUMIFS可以指向一个关闭的工作簿。
      • SUMIF/SUMIFS/COUNTIFS 等不适用于已关闭的工作簿
      猜你喜欢
      • 1970-01-01
      • 2022-12-02
      • 2013-11-18
      • 2017-05-25
      • 2022-12-28
      • 2015-11-03
      • 2022-12-01
      • 2012-08-12
      • 2013-09-20
      相关资源
      最近更新 更多