0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Google spreadsheetでsumif関数にor条件を使った集計をしたいとき

Last updated at Posted at 2024-01-21

問題点

A B
1 商品名 売上
2 商品A 100
3 商品B 200
4 商品C 150
5 商品A 120
6 商品B 180

上記のようなスプレッドシート(実際はもっと大きな行数のデータ)で

  • 商品A
  • 商品B

の売上だけを合計したい場合、皆さんはどのように集計するでしょうか?
sumif関数ではor条件が使えず、ネットで探してもサクッと解決策が見つからなかったのでこちらにメモします。

解決策1 : sumif関数を2つ書く

具体的には以下になります。

A B
1 商品名 売上
2 商品A 100
3 商品B 200
4 商品C 150
5 商品A 120
6 商品B 180
=sumif(A:A,"商品A",B:B) + sumif(A:A,"商品B",B:B)

メリット :

  • 単純

デメリット:

  • 対象の商品が多くなると関数が長くなり、わかりにくくなる。
  • 変更があった時の修正が大変。

解決策2 : 対象商品のマスタを作り、flagの列を追加する。

具体的には以下です。

<対象商品マスタ>(自分で作る)

商品名 flag
1 商品A 1
2 商品B 1
3 商品C 0

XLOOKUP関数を使い、集計したいテーブルにflag列を追加する。
A B C
1 商品名 売上 flag
2 商品A 100 1
3 商品B 200 1
4 商品C 150 0
5 商品A 120 1
6 商品B 180 1

そしてsumif。
=sumif(C:C,1,B:B)

メリット :

  • 商品数が増えても関数が長くならない。

デメリット:

  • テーブルが増える。

解決策3 : FILTER関数 + SUM関数

今回特にメモっておきたいと思ったのがこれです。
具体的には以下です。

A B
1 商品名 売上
2 商品A 100
3 商品B 200
4 商品C 150
5 商品A 120
6 商品B 180
=sum(FILTER(B:B,(A:A="商品A") + (A:A="商品B")))

メリット :

  • 対象品が増えても関数が長くなりにくい。
  • 集計用のマスタテーブルが増えない。

デメリット:

  • FILTER関数に慣れていないと少し難しい。

まとめ

どの解決策がいいかはケースバイケースですね。
メモりたかったことは以上です。

補足:FILTER関数

この関数の基本的な形式は以下です。

FILTER(取り出したい範囲, 条件1, [条件2, ...])

例1

仮に商品Aの売上だけを取り出したい場合、以下です。

A B
1 商品名 売上
2 商品A 100
3 商品B 200
4 商品C 150
5 商品A 120
6 商品B 180

<関数>

=FILTER(B:B, A:A="商品A")

<出力>
100
120

例2

今度はor条件を加えます。
商品Aか、もしくは商品Bの売上だけをとり出したい場合は以下です。

A B
1 商品名 売上
2 商品A 100
3 商品B 200
4 商品C 150
5 商品A 120
6 商品B 180

<関数>

=FILTER(B:B, (A:A="商品A") + (A:A="商品B"))

<出力>
100
200
120
180

or条件を指定するのに+(プラス)を使うのが少し独特ですね。

あとはSUM関数で集計してやれば合計が出ますね。

<関数>

=sum(FILTER(B:B, (A:A="商品A") + (A:A="商品B")))

<出力>
600

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?