如何汇总按多个条件筛选的行

时间:2017-03-18 15:38:31

标签: google-sheets spreadsheet formulas

Google表格问题。

我有以下表格(名为" x"),其中包含费用:

Date        Sum Category
1/Jan/2017  100 red
2/Jan/2017  200 blue
3/Jan/2017  10  red
4/Jan/2017  20  blue
1/Feb/17    1   red
2/Feb/17    2   blue

我需要计算每个类别的月度总数:

Month   Red Blue
Jan/17  110 220
Feb/17  1   2

我目前的解决方案是在每个结果单元格中放置如下内容:

=SUM(IFERROR(FILTER(x!$B:$B, MONTH(x!$A:$A)=MONTH($A2), x!$C:$C="red")))

我在问是否有更好的方法。我想让一个结果公式在数组上运行(可能是一个ArrayFormula ?!),而不是在每个单元格中放置和自定义我的公式。

任何想法?!谢谢!

1 个答案:

答案 0 :(得分:0)

这是使用数据透视表的基本思路,但并不完全存在,因为到目前为止,我只能将月份作为数字

query(A:C,"select month(A)+1,sum(B) where C<>'' group by month(A) pivot C label month(A)+1 'Month Number'")

enter image description here

修改

使用数组公式和VLOOKUP可以将月份数更改为月份名称,但公式有点长(我的月份数字和名称列在I&amp; J列中)

=arrayformula({vlookup(query(query(A:C,"select month(A)+1,sum(B) where C<>'' group by month(A) pivot C label month(A)+1 'Month Number'"),"select Col1"),I:J,2,false)})

你仍然需要选择另外两列 - 这就是整个事情

=arrayformula({vlookup(query(query(A:C,"select month(A)+1,sum(B) where C<>'' group by month(A) pivot C label month(A)+1 'Month Number'"),"select Col1"),I:J,2,false),query(query(A:C,"select month(A)+1,sum(B) where C<>'' group by month(A) pivot C label month(A)+1 'Month Number'"),"select Col2,Col3")})

enter image description here