関数名の末尾に「IF」が付く関数には制約があった
ガイド記事「条件を満たすデータの平均値を算出するAVERAGEIF関数」では、Excel2007で新しくAVERAGEIF関数が追加され、関数名の末尾に「IF」が付く関数がSUMIF関数、COUNTIF関数、AVERAGEIF関数の3種類になったことを紹介しました。これらの関数は、指定した条件を満たすデータだけを処理できる関数ですが、「指定できる条件は1つだけ」という制約がありました。
たとえば、ガイド記事「条件を満たすデータの平均値を算出するAVERAGEIF関数」では、SUMIF関数の使用例として、セルA16に入力された支店の金額データだけを合計するサンプルを紹介しました。ここで指定した条件は、「支店名」の1つだけです。
SUMIF関数の使用例
「支店名」だけでなく、「商品名」なども条件に加えて処理するデータを絞り込みたい。そういった要望に応える形で、Excel2007では「複数の条件」を満たすデータを処理する関数が追加されました。
「複数の条件」を満たすデータだけを処理する関数がExcel2007で登場
追加されたのは、SUMIFS関数、COUNTIFS関数、AVERAGEIFS関数の3つ。いずれも、関数名の末尾に「IF」の複数形を表す「IFS」が付いています。複数の条件を満たすデータだけを対象に、SUMIFS関数は「合計」、COUNTIFS関数は「データの個数」、AVERAGEIFS関数は「平均」を算出します。関数名の末尾に「IFS」が付いている関数
複数条件を満たすデータだけを合計できるSUMIFS関数
下図は、Excel2010で作成したSUMIFS関数の使用例です。ここでは、セルB15~D15に入力されている「支店名」「営業名」「得意先名」の3つの条件を満たすデータだけを対象にして、セルE15に売上金額の「合計金額」を算出しています。SUMIFS関数の使用例
それでは、セルE15に入力されているSUMIFS関数の内容を確認してみましょう。まず、1つ目の引数「合計対象範囲」には、合計するデータが入力されているセル範囲を、見出しを含めないで指定しています。
引数「合計対象範囲」の指定
セルE15 =SUMIFS(E3:E12,B3:B12,B15,C3:C12,C15,D3:D12,D15)
そして、条件データを検索するセル範囲を引数「条件範囲」、条件データが入力されているセルを引数「条件」に指定しています。この2つの引数を1組として、条件の数だけ指定できます。ここでは、「支店名」「営業名」「得意先名」の3組分の引数を指定しています。
引数「条件範囲」と引数「条件」の指定
なお、合計金額を算出するには、条件データがすべて入力されている必要があります。もし、「支店名」は「東京」、「営業名」は「鈴木」、「得意先名」は条件を指定しない、という場合は、条件を指定しないセルに「*」を入力してください。
条件を指定しない場合の条件入力
Excel2003ではDSUM関数で代用できる
パソコンに「Microsoft Office 互換機能パック」がインストールされている場合、Excel2007で作成したブックをExcel2003で開くことができますが、SUMIFS関数が入力されているブックをExcel2003で開いて再計算を実行すると、「#NAME?」エラーが表示されてしまいます。このような場合は、DSUM関数を代用して、SUMIFS関数と同じような機能を実現しましょう。下図は、Excel2003を使用して、SUMIFS関数で紹介したサンプルと同じ内容をDSUM関数で作成したものです。
DSUM関数を入力した
セルE15に入力されているDSUM関数の内容を確認していきましょう。まず、1つ目の引数「データベース」に、見出しを含めた表全体のセル範囲を指定しています。
引数「データベース」の設定
2つ目の引数「フィールド」には、合計したい列の列見出しだけを指定しています。
引数「フィールド」の設定
そして、3つ目の引数「条件」に、条件を入力するセル範囲を、見出しも含めて指定しています。
引数「条件」の設定
なお、DSUM関数の場合、合計金額を算出するためにすべての条件データが入力されている必要はありません。もし、「支店名」は「東京」、「営業名」は「鈴木」、「得意先名」は条件を指定しない、という場合は、条件を指定しないセルを空白にしておきます。
条件を指定しない場合の条件入力
今回は、SUMIFS関数を中心に紹介しましたが、AVERAGEIFS関数、COUNTIFS関数も引数の構成は同じなので、ぜひ利用してみてください。Excel2003では、AVERAGEIFS関数をDAVERAGE関数、COUNTIFS関数をDCOUNTA関数で代用できます。
【関連記事】
・条件を満たすデータの平均値を算出するAVERAGEIF関数