Google电子表格中的SUMIFS功能

Guy*_*Guy 19 performance google-sheets google-query-language

我正在尝试在Google电子表格中使用与SUMIFS类似的功能(如SUMIF,但只有一个标准).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=zh-CN&answer=71291),类似于SUMIF:

=ARRAYFORMULA(SUM(IF(A1:A10>5, A1:A10, 0)))
Run Code Online (Sandbox Code Playgroud)

通过添加AND:

=ARRAYFORMULA(SUM(IF(AND(A1:A10>5,B1:B10=1), C1:C10, 0)))
Run Code Online (Sandbox Code Playgroud)

但是AND函数没有获取ArrayFormula指令并且一直返回FALSE.

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

=SUM(QUERY(A1:C10,"Select C where A>5 AND B=1"))
Run Code Online (Sandbox Code Playgroud)

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

=SUM(QUERY(DataRange,Concatenate( "Select C where A=",$A2," AND B=",B$1)))
Run Code Online (Sandbox Code Playgroud)

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

Jav*_*aaa 15

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

SUM(FILTER(sourceArray, arrayCondition_1, arrayCondition_2, ..., arrayCondition_30))
Run Code Online (Sandbox Code Playgroud)

例如:

SUM(FILTER(A1:A10;A1:A10>5;B1:B10=1)
Run Code Online (Sandbox Code Playgroud)

说明: FILTER()过滤A1:A10中的行,其中A1:A10> 5且B1:B10 = 1.然后SUM()对这些单元格的值求和.

这种方法非常灵活,并且很容易允许以COUNTIFS()函数为例(只使用COUNT()而不是SUM()).


Guy*_*Guy 10

我发现了一个更快的功能来填充"数据透视表":

=ARRAYFORMULA(SUM(((Sample!$A:$A)=$A2) * ((Sample!$B:$B)=B$1) * (Sample!$C:$C) ))
Run Code Online (Sandbox Code Playgroud)

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

  • 另一个想法,如果我的问题是正确的,那就是`= ARRAYFORMULA(SUMIF(样本!A:A和样本!B:B; A&B;样本!C:C)) (2认同)

yoy*_*oyo 7

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

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