20

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

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

=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)))

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

4

4 回答 4

16

在我看来,轻松制作类似 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())。

于 2013-03-31T12:55:56.800 回答
10

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

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

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

于 2012-02-06T18:32:26.743 回答
7

截至 2013 年 12 月,Google 表格现在具有 SUMIFS 功能,如本博文中所述并在此处记录。

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

于 2014-01-05T06:00:49.817 回答
1

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

于 2012-07-11T01:56:22.513 回答