単純にセル範囲を合計するだけなら、関数SUMでも十分に事は足りる。しかし、関数SUMでは上手く合計を求められないケースもある。そこで今回は、条件を指定して合計を算出する関数SUMIFの使い方を紹介しよう。また、複数の条件を指定できる関数SUMIFSについても紹介。いずれも「条件付きの合計」を求める関数だが、引数を記述する順番が異なることに注意する必要がある。
関数SUMIFの使い方
以下に示した図は、とある施設の「入場料」「館内飲食」「グッズ販売」について各日の売上をまとめた表。この表から「売上の合計」を求めたい場合は、E5~E25の数値を合計すればよい。つまり「=SUM(E5:E25)」という関数を入力することで「売上の合計」を算出できる。
では、「入場料」についてのみ「売上の合計」を求めたい場合はどうすればよいだろうか? この場合、関数SUMでは思い通りの結果を得られない。「=E5+E8+E11+…」のように足し算で処理する方法もなくはないが、データ数が多くなると現実的な解決法とはいえない。また、数式の入力ミスを犯してしまう危険性も高くなる。
このような場合で、便利に活用できるのが関数SUMIFだ。関数SUMIFは「条件を指定して数値を合計できる関数」であり、以下の3つの引数を指定して使用する。
◆関数SUMIFの書式 =SUMIF(条件範囲, 条件, 合計範囲)
- 第1引数…条件の対象となるセル範囲
- 第2引数…条件(文字列や比較演算式など)
- 第3引数…数値を合計するセル範囲
これだけの説明では理解しにくいと思うので、具体的な例を示しておこう。たとえば、先ほどの表から「入場料の売上の合計」を求める場合は、以下のように関数を記述する。
=SUMIF(D5:D25,"入場料",E5:E25)
今回の例では、「分類」の値(入場料/館内飲食/グッズ販売)に応じて合計するセルを限定するので、第1引数には「D5:D25」のセル範囲を指定する。続いて、条件となる「入場料」の文字列を第2引数に指定。このように「文字列」を条件に指定するときは、その前後を「"」(ダブルクォーテーション)で囲んでおく必要がある。そして最後に、合計する数値(売上)が入力されているセル範囲「E5:E25」を第3引数に指定する。
これで、D列が「入場料」の行だけを対象に、「売上の合計」を算出することができる。今回の例では、「入場料の売上の合計」は「\886,200」と表示された。
もちろん、条件(第2引数)にセル参照を指定しても構わない。今回の例では、D28セルに「入場料」という文字が入力されているので、以下のように関数SUMIFを記述することもできる。
ただし、オートフィルを使って関数をコピーするときは、第1引数と第3引数を「絶対参照」で指定しておく必要があることに注意しなければいけない。「D5:D25」や「E5:E25」のように相対参照で指定してしまうと、関数SUMIFをコピーしたときに引数が自動調整され、セル範囲が「D6:D26」や「E6:E26」などに変化してしまい、間違った計算結果が表示される恐れがある。関数SUMIFに慣れていない人がミスを犯しやすいポイントなので、十分に注意しておこう。
なお、「相対参照」と「絶対参照」については、本連載の第18回で詳しく解説している。両者の違いがよく分からない方は、あわせて確認しておくとよいだろう。
複数の条件を指定できる関数SUMIFSの使い方
Excelには、複数の条件を指定できる関数SUMIFSも用意されている。関数SUMIFと似たような使い方になるが、引数を記述する順番が異なる点に注意する必要がある。
◆関数SUMIFSの書式 =SUMIFS(合計範囲, 条件範囲1, 条件1, 条件範囲2, 条件2,…)
関数SUMIFSでは、「数値を合計するセル範囲」を第1引数に記述し、その後、第2~3引数に「1つ目の条件」、第4~5引数に「2つ目の条件」、と2つの引数をペアにして条件を記述していく。
こちらも具体的な例を紹介しておこう。たとえば、「平日」の「入場料」についてのみ「売上の合計」を求める場合は、以下のように関数SUMIFSを入力する。
第1引数には、「売上」が入力されているセル範囲「E5:E25」を指定。続いて、1つ目の条件(C5:C25が「平日」の場合)を第2~3引数に指定する。同様に、2つの目の条件(D5:D25が「入場料」の場合)を第4~5引数に指定する。「Enter」キーを押して関数の入力を確定すると、「\512,600」という計算結果が表示される。
なお、条件には「文字列」だけでなく、「数値の範囲」を指定することも可能だ。この場合は、比較演算子を使って条件を指定し、その前後を「"」(ダブルクォーテーション)で囲む。
以下は、DVDまたはBlu-rayを貸し出した本数を会員別にまとめた表である。
この表から「50歳以上」の会員について「貸出本数の合計」を求めたい場合は、以下の図のように関数SUMIFSを記述する。
同様に、「20歳以上」かつ「50歳未満」という条件も指定できる。この場合の関数SUMIFSの記述は、以下の図のようになる。
「=」(イコール)の有無に応じて、「>=」(以上)、「>」(より大きい)、「<=」(以下)、「<」(より小さい)と比較演算子の意味が異なる点に注意すれば、すぐに使い方を理解できるだろう。
このように関数SUMIFSを使用すると、複雑な条件を指定した「数値の合計」を求めることも可能となる。応用できる場面は多いので、ぜひ使い方を覚えておくとよいだろう。
ちなみに関数SUMIFSは、それぞれの条件を「かつ」(and)で結ぶ仕様になっている。よって、「関内飲食またはグッズ販売」などの条件は指定できない。そこで次回は、より柔軟に条件を指定できる関数DSUMの使い方を紹介していこう。