【问题标题】:How to SUM rows filtered by multiple criteria如何对按多个条件过滤的行求和
【发布时间】:2017-03-18 15:38:31
【问题描述】:

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?!),而不是在每个单元格中放置和自定义我的公式。

有什么想法吗?!谢谢!

【问题讨论】:

    标签: google-sheets spreadsheet formulas


    【解决方案1】:

    嗯,这是使用数据透视表的基本想法,但并不完全在那里,因为到目前为止我只能将月份作为数字来获取

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

    编辑

    可以使用数组公式和 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")})
    

    【讨论】:

    • 是的,数据透视表。但是如何在结果中只显示一行?我将每个类别的结果放在更复杂的报告中...
    • 你的意思是你想一次选择一行,比如二月?
    • 不,我的意思是一个,就像一个红色的类别,对不起
    • 好吧,我可能不得不把它留在那里,因为这里已经很晚了,但是当你在最后一个公式中的数组中得到结果时,应该可以通过做切片它匹配标题行中的颜色,然后使用索引拉出相应的列。但如果你要指定颜色和月份,它可能会带你回到像 sumifs 这样非常简单的东西。
    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    相关资源
    最近更新 更多