【问题标题】:SUMIFS function in Google SpreadsheetGoogle 电子表格中的 SUMIFS 函数
【发布时间】:2012-02-26 02:10:42
【问题描述】:

我正在尝试使用与 SUMIFS 类似的功能(如 SUMIF,但不止一个单一标准)在 Google 电子表格中。 MS-Excel 内置了这个功能 (http://office.microsoft.com/en-us/excel-help/sumifs-function-HA010342933.aspx?CTT=1)。

我尝试使用 ArrayFormula (http://support.google.com/docs/bin/answer.py?hl=en&answer=71291),类似于 SUMIF:

=ARRAYFORMULA(SUM(IF(A1:A10>5, A1:A10, 0)))

通过添加 AND

=ARRAYFORMULA(SUM(IF(AND(A1:A10>5,B1:B10=1), C1:C10, 0)))

但是 AND 函数没有选择 ArrayFormula 指令并且一直返回 FALSE。

我能找到的唯一解决方案是使用 QUERY,这似乎有点慢和复杂:

=SUM(QUERY(A1:C10,"Select C where A>5 AND B=1"))

我的目标是填写一张表(类似于数据透视表),其中包含许多要计算的值:

=SUM(QUERY(DataRange,Concatenate( "Select C where A=",$A2," AND B=",B$1)))

有没有人设法以更简单快捷的方式做到这一点?

【问题讨论】:

    标签: performance google-sheets google-query-language


    【解决方案1】:

    在我看来,轻松制作类似 SumIFS 的函数的最简单方法是结合 FILTER 和 SUM 函数。

    SUM(FILTER(sourceArray, arrayCondition_1, arrayCondition_2, ..., arrayCondition_30))
    

    例如:

    SUM(FILTER(A1:A10;A1:A10>5;B1:B10=1)
    

    解释: FILTER() 过滤 A1:A10 中 A1:A10 > 5 且 B1:B10 = 1 的行。然后 SUM() 对这些单元格的值求和。

    这种方法非常灵活,并且可以轻松地创建例如 COUNTIFS() 函数(只需使用 COUNT() 而不是 SUM())。

    【讨论】:

    【解决方案2】:

    我找到了一个更快的函数来填充“数据透视表”:

    =ARRAYFORMULA(SUM(((Sample!$A:$A)=$A2) * ((Sample!$B:$B)=B$1) * (Sample!$C:$C) ))
    

    如果没有较重的 StringQuery 函数,它似乎运行得更快。

    【讨论】:

    • 另一个想法,如果我没看错你的问题,那就是=ARRAYFORMULA(SUMIF(Sample!A:A&Sample!B:B;A&B;Sample!C:C))
    • 我真的很喜欢盖伊的方法。我正在使用上面 Javaaaa 中的 SUM(FILTER(sourceArray, arrayCondition_1, ... 方法,但很恼火的是,当 FILTER() 返回零结果时,我不得不将它包装在 IFERROR() 中以捕获 #N/A 情况。 “数据透视表”方法不会像我想要的那样以零结果出错。甜!
    【解决方案3】:

    截至 2013 年 12 月,Google 表格现在具有 SUMIFS 功能,如 this blog post 中所述并记录在 here 中。

    请注意,旧电子表格不会转换为新版本,但您可以尝试将数据复制粘贴到新工作簿中。

    【讨论】:

      【解决方案4】:

      这家伙使用 Filter 函数按条件分解数组,然后使用 sum 函数将其全部添加到同一个单元格中。 http://www.youtube.com/watch?v=Q4j3uSqet14 它对我来说就像一种魅力。

      【讨论】:

      • 视频中的方法类似于 QUERY 方法,我发现它在大型电子表格上相当慢。即使有 4 行,计算也需要一秒钟。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 2013-01-25
      • 2013-09-16
      相关资源
      最近更新 更多