2017-03-18 24 views
1

Google表格问题。如何按多个条件过滤SUM行

我有以下表(名为“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 ?!),而不是在每个单元格中放置和定制我的公式。

有什么想法?谢谢!

回答

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 & 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

+0

是,数据透视表。但是如何在结果中只显示一行?我将每个类别的结果放在更复杂的报告中...... – Cata

+0

您的意思是您想要一次选择一行,例如二月? –

+0

不,我的意思是一个*列*,就像一个类红色,对不起 – Cata