« 関数とは・合計の関数 SUM() | トップページ | 条件分岐 IF関数 »

2008/12/25

条件を指定して合計する SUMIF関数 SUMPRODUCT関数

☆SUMIF関数☆
SUMIFは、サムイフと読むよ。スミフではないよ。
SUMがサム、それに、IFを付けたものだから、サムイフだよ。
しょしきは、SUMIF(範囲,検索条件, 合計範囲)
以下のような表があるよ。

日付 品名  価格
1日 りんご 300
2日 バナナ 500
3日 りんご 400
4日 バナナ 600
5日 みかん 700

バナナだけの合計が欲しいとき、どうするかな?
これは5行しかないけど、300行もあったら、たいへんだよ。
2列目を昇順に並び替えて、集計機能を使うのもいいけど、めんどうだよ。
そんな時は、サムイフ関数だよ。

2列目が、バナナであるところの、3列目を合計する。
2列目で、バナナを調べる範囲は、B2:B6、条件は、バナナ、合計する範囲は、C2:C6。
=SUMIF(範囲,検索条件, 合計範囲)に当てはめると、
=SUMIF(B2:B6,"バナナ",C2:C6

※ポイント※
A8にバナナ、A9にりんご、A10にみかんと入力。
C8に、 =SUMIF(B2:B6,A8,C2:C6) と入力すれば、バナナの合計が出る。
これをコピーして、C9に貼り付ければ、(下へ一つずらせば)、
=SUMIF(B3:B7,A9,C3:C7) となる。

検索条件は、りんごとなって都合が良いが、行番号が違うよ。
行番号がずれないように、C8のセル番地の行に$を付けるよ。
=SUMIF(B$2:B$6,A8,C$2:C$6)
これをコピーして、C9、C10に貼り付ければ、うまく合計が出るよ。

☆500以上の数値を合計する☆
500以上を調べる範囲は、C2:C6。
検索条件は、"で囲んで、 ">=500"。
合計範囲は、C2:C6 だから、省略できる。
結局、以下のようになる。
=SUMIF(C2:C6,">=500")

☆複数条件で合計する☆
今回は、SUMPRODUCT関数を使ってみるよ。
サム、サムイフと来たから、サムプロダクトにしたんだよ。
合計、単一条件で合計、複数条件で合計の順になるね。

以下のような表があるよ。
単価 個数 合計
10 3
20 6
30 8

単価と個数をかけて、合計を出し、それを足し算すれば総合計の金額が出るね。
それを一つの関数でやるのが、SUMPRODUCT。
書式は、 SUMPRODUCT(配列1,配列2,配列3, ...)
配列については、今回はセル範囲と考えておいてね。
上の例なら、 =SUMPRODUCT(A2:A4,B2:B4) で総合計が出るよ。

☆論理値の計算☆
=1+1=3 と入力すると、1+1は3と等しくないから、FALSE と表示されるよ。
=1+1=2 なら、TRUE。TRUEとFALSEを論理値と呼んでいるよ。
◎論理値を計算に使うと、TRUEは1、FALSEは0として計算されることになっているよ。

以下のような表があるとするよ。
氏名 性別 出身 年齢
佐藤 男性 岐阜 40
鈴木 女性 東京 20
沢田 男性 岐阜 50

セルC2は、岐阜だから、E2に、=C2="岐阜" と入力すればTRUEとなるよ。
E2に、=(C2="岐阜")*D2 と入力すれば、1*40 だから、40と表示される。
これをコピーして、E3に貼り付けると、=(C3="岐阜")*D3 となるね。
ところが、C3は岐阜ではないから、0*d3 となって、0と表示される。
E4に貼り付ければ、C4が岐阜だから、1*D4 で50と表示される。

この、E3:E5 を足し算するよ。
要するに、岐阜の出身の人の年齢を足し算することになるんだよ。
何回も読んで、理解してね。
掛け算して足しているから、SUMPRODUCTが使えるよ。

=SUMPRODUCT((C2:C4="岐阜")*1,D2:D4)
C2:C4="岐阜" は、C2="岐阜"、C3="岐阜"、C4="岐阜" の3つをまとめたものだよ。
カッコで囲んで1をかけているのは、論理値を数値にするためだよ。

これを利用すれば、男性で岐阜の人の年齢は、以下のように書けるよ。
=SUMPRODUCT((B2:B4="男性")*(C2:C4="岐阜"),D2:D4)
これは、論理値の掛け算だから、1をかけなくても大丈夫だよ。
そうそう、どこかにFALSEがあれば、0をかけるから、0になるよ。


ご意見、ご感想、ご質問など、待っています。

マコちゃんにメール

コメント

コメントを書く

(ウェブ上には掲載しません)