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)
如果没有更重的String和Query函数,它似乎运行得更快.