SUMIF、DSUM関数で条件にあった合計を求める
条件を付けて個数、合計を求める |
今回はIF関数の第2回目として、IF関数の機能を兼ねた単独関数についてご紹介しましょう。条件を付けて求めるにはIF関数です。しかし、更に算出した値に対して合計や個数を求める場合には、IF関数にSUM関数やCOUNTA関数をネストしなければならない・・・そんな必要はありません。エクセルには、そんな時のためにSUMIF関数やCOUNTIF関数が用意されています。
SUMIF関数とは、文字通り、SUM関数とIF関数の機能を兼ねた関数です。つまり、条件を付けて合計を求めてくれる便利な関数なのです。そして、COUNTIF関数もCOUNT(COUNTA)関数とIF関数の機能を兼ねているため、条件を付けて個数を求めてくれます。まさに一石二鳥の関数なのです。
ただし、これらの関数は、条件を1つしか指定できません。複数の条件を付けたい場合には、DSUM、DCOUNT関数を利用しましょう。AND、OR条件を利用した複雑な複数の条件でも、条件範囲を選択するだけで、一発で集計できます。
さらに、2回に渡ってご紹介しました、IF、COUNTIF、DSUM関数全てを組み合わせると、それぞれの関数の特徴が最大限に生かされた計算結果を導き出す事ができます。
今回の関数
|
||
|
|||||
書 式 | =SUMIF(範囲、検索条件[,合計範囲]) | ||||
合計を求めるSUMと条件を設定するIFが組み合わさった関数。条件にあったセルだけを抽出し、合計を求めることができる。ここでは大人の場合と子供の場合の手数料(K列)を抽出し、それぞれ合計額を出している。 |
|
|||||
書 式 | =COUNTIF(範囲,検索条件) | ||||
セル範囲に含まれる数値の個数を数えるCOUNTとIFが組み合わさった関数。これによって条件にあったセルの個数を数えることができる。ここではM列に「毎月抽選でプレゼント」と入っているセルの個数を数えている。 |
[1]条件を付けて合計を求める |
||
セルに条件を付けて合計を求める方法には、3通りある。
1つの条件で合計を求めるには、SUMIF関数、複数の条件で求めるには、DSUM関数、条件付き合計式ウィザードを利用する。それぞれの違いについてご説明しよう。
1つの条件で合計を求める |
1つの条件で素早く合計を求めたいならSUMIF関数を使おう。
【サンプルデータ シート20-1】
|
|
|
複数の条件で合計を求める |
||
複数の条件を付けて合計を求めるなら、条件付き合計式ウィザード、DSUM関数を使おう。それぞれの違いについて詳しくご紹介。
◇■ AND条件のみ ■◇
条件付き合計式ウィザードは、ウィザードに従って操作していくだけで、複数の条件が付けられる。しかし、AND条件しか付ける事ができない。
また、リスト内にセルの結合や、ユーザー定義で表示形式を設定している場合は、うまく認識されないので、利用する前に、それぞれを外しておく事が必要。
Cコースを利用している大人の利用料計を求める |
【サンプルデータ シート20-2】 [ツール(T)] メニューから [アドイン(I)] を選択し、(このときCD-ROMから必要なデータをインストールするように求められる事もあります。指示に従ってCD-ROMをセットしてください) 1. [条件付き合計式ウィザード] にチェックを入れて 2. [OK] ボタンをクリックする。 |
|
|
サンプルデータでは条件に 【 大人/子供=大人 】 【 C=○ 】 を入力。 |
|
|
|
3年以上利用している子供の利用料計を求める |
|
知ッ得 |
「条件付き合計式ウィザード」は、ウィザードを指定するだけで、複数の条件がつけられる。しかし、AND条件しかつけることができない。また、リスト内にセルの結合や、ユーザー定義で表示形式を設定しているとうまく認識されない。利用する前に、それぞれを外しておくことが必要。 |
◇■ AND、OR条件 ■◇
DSUM関数は、条件範囲を選択するだけで、複数の条件を付けて合計を求めることができる。しかも、AND、OR条件はもちろんのこと、リストの結合を外す必要もないので素早く算出する事ができる。
A、Dコースを利用している大人または、 5年以上利用している子供の利用料計 |
【サンプルデータ シート20-3】
|
|
|
サンプルデータの数式は、DSUM(B4:N14,K4,B16:K18) となります。 |
知ッ得 |
M列「概要」には、IF関数を使い、利用年数が5年かつA〜Eコースまでで3コース以上選択しているなら、「毎月抽選でプレゼント」、それ以外なら「抽選無し」と表示するよう設定している。式は「=IF(AND(I5>=5,COUNTA(C5:G5)>=3),"毎月抽選でプレゼント","抽選なし")」 |
[2]条件を付けて個数を求める |
||
セルに条件を付けて個数を求めるには「COUNTIF」、「DCOUNTA」関数を利用する。
1つの条件で求めるには、「COUNTIF」関数、複数の条件で求めるには、「DCOUNTA」関数を利用しよう。
◇■ 1つの条件で個数を求める ■◇
個数を求めるには、「COUNT」、「COUNTA」関数を使う。しかし、条件を付けて個数を求めるのに、IF関数をネストする必要なんてない。「COUNTIF」関数1つで、条件を付けて個数を求める事ができる。ただし、1つだけしか条件を設定する事ができない。
抽選者の人数を求める |
【サンプルデータ シート20-4】
|
|
|
◇■ 複数の条件で個数を求める ■◇
複数の条件で、個数を求めたいなら、「DCOUNTA」関数を利用しよう。条件を範囲選択するだけで、複数の条件で、個数を求める事ができる。
お客様番号が2で始まる抽選者の人数を求める |
条件を入力し、(サンプルデータは入力済み)
|
|
|
◇■ COUNTIF関数を2つ使えば、複数の条件でもOK ■◇
2つの検索条件が、同じフィールド(列)であれば、COUNTIF関数を2つ使えば、2つの条件で個数を求める事ができる。
お客様番号が2で始まる人数を求める |
つまり、20000以上の人数から、30000以上の人数を引けば、20000〜29999までの人数を求める事ができるというわけである。 |
[3]IF、COUNTIF、DSUM 関数 |
||
2回に分けてご紹介してきた、IF関数、COUNTIF関数、DSUM関数全てをネストして使うと、エラー値を出さずに不一致データの処理が行え、一致データに条件を付けて算出する事ができる。
COUNTIF関数の答えが0の場合、つまり不一致の場合、セルに表示させる値を、そうでない場合、つまり、一致したデータの場合、セルに表示させる値をIF関数でそれぞれ、真の場合と儀の場合に設定すればよいわけである。
ここでは、未登録番号を入力すると、「未登録です」というコメントを表示させ、登録番号の場合は、利用料を集計するという数式を設定する。
◇■ 1つの条件で個数を求める ■◇
個数を求めるには、「COUNT」、「COUNTA」関数を使う。しかし、条件を付けて個数を求めるのに、IF関数をネストする必要なんてない。「COUNTIF」関数1つで、条件を付けて個数を求める事ができる。ただし、1つだけしか条件を設定する事ができない。
【サンプルデータ シート20-5】
サンプルデータの式は以下のようになります。 |
今回の表示形式 |
お客様番号を誤って入力しないように、桁数を間違えた場合は、セルに「5桁入力必須」と表示され、登録されていない番号が入力された場合は、「未登録番号」と表示されるように、前回と同様、表示形式に条件を付けてみよう。 |
サンプルデータでは20-5シートのM5セルの書式設定に、[<10000]5桁入力必須;[>50000]未登録番号と設定。 |