2017-03-18 17 views
1

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 ?!)上で単一の結果式を処理したいと考えています。

どのようなアイデアですか?ありがとう!

答えて

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

EDIT

数として月の月番号を取得することができますので、まあ、これはかなりそこにピボットテーブルを使用してではなく、の基本的な考え方であります配列式と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)}) 

と、あなたはまだ、他の2つの列をピックアップして持っている - これは、全体のこと

=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

はい、ピボットテーブルです。しかし、結果に1行だけを表示する方法はありますか?より複雑なレポートの中にカテゴリごとの結果を配置しています... – Cata

+0

2月に一度に1つの行を選択することを意味しますか? –

+0

いいえ、私は1つのカテゴリのように、赤いです、ごめんなさい – Cata

関連する問題