【SUMIFS関数】1つ以上の条件を同時に満たすデータの合計を出す

【SUMIFS関数】1つ以上の条件を同時に満たすデータの合計を出す

以前の記事では、『SUM関数:使い方と解説』を解説し、

SUM関数を拡張させた『【SUMIF関数】検索条件に一致したデータの合計値を求める』を解説しました。

本記事では、SUMIF関数の機能を拡張した「SUMIFS関数」を解説します。

SUMIF関数は「指定条件に一致するセルの値を合計します」でした。

ただ、SUMIF関数は指定条件の数は、あくまで1つです。

指定条件の数1つ以上にしたい場合に、SUMIFS関数の威力を発揮します。

例えば、男性20代の合計、女性20代の合計を別々に求めたい等です。

言わば、疑似ピボットテーブルです。

SUMIFS関数を使えば・・・

クロス集計表のように、表側(ひょうそく)≒縦軸、表頭(ひょうとう)≒横軸を設定して集計が可能になります。

SUMIFS関数,クロス集計表,複数


クロス集計表とは、詳しく解説しませんが下記のイメージです。

SUMIFS関数,クロス集計表,複数

SUM関数とSUMIF関数とSUMIFS関数の違いは、下記のイメージです。

SUM関数→SUMIF関数→SUMIFS関数にかけて、より複雑になるが、機能は増えるイメージです。

いずれ、別記事で詳しく解説したいと考えています。

記事の読み方

説明の順は以下です。
まずは、「問題」を与えて、
次に、「解答」を提示します。
最後に、「解説」です。

よくある、結論→理由の構成順に沿いました。

先に「解答」を知りたい人を考慮したためです。

「解法」の説明は不要で、とりあえずビジネス現場で使えればいいと思う方もいるためです。

また、ある程度の経験者であれば、
「問題」と「解答」だけで、関数を使いこなせてしまうためです。

そのために、即利用できるように、ダウンロードファイルを用意していますので、
活用してみてください。
(経験者であれば、ダウンロードファイルだけで、実務に応用できてしまうのではないでしょうか)

問題

サンプルデータから、Date」「Product」に一致した「Sales」の合計値を求め、

Date×ProductSalesの合計値」を作成してみます。

サンプルデータは、財務サンプルの Excel ブックを一部改変したものですので、ダウンロードして活用ください。
解答付きです。

SUMIFS関数,クロス集計表,複数
SUMIFS関数,クロス集計表,複数

いかがでしょうか。

まさに、ピボットテーブルからクロス集計表を作成したかのようです。

これをExcel関数で実現させます。

解答

SUMIFS関数を使用します。
ピボットテーブルでも可能ですが、関数の方が連動性に優れています。
(ピボットテーブルは更新する必要がある)

関数式

次の関数式を記述すると、DateごとのSales合計値が求まります。

=SUMIFS($J$2:$J$701,$M$2:$M$701,$R3&$S3,$C$2:$C$701,T$2)

解説

ざっくり解説

関数の構文は以下です。

=SUMIFS(合計対象範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...)

SUMIFS関数は1つ以上の条件を設定できるため、条件分を引数を設定できます。
条件範囲と条件で1セットになっているイメージです。

具体的に、本問題に当てはめると・・・

=SUMIFS(Sales, Date, 表側1&表側2, Product, 表頭

では、実際のセル範囲を指定すると・・・

=SUMIFS($J$2:$J$701, $M$2:$M$701, $R3&$S3, $C$2:$C$701, T$2

となります。

SUMIFS関数,クロス集計表,複数

& の「&」の意味

「Date」の表記が「2014年1月」となっているため、「&」で文字列を結合をして、&で指定しています。

完全一致をしないと、検索にヒットしないためです。


$マークによる絶対参照/複合参照/相対参照を正しく設定してください。
分からない方は、下記記事ををご覧いただければと思います。

くわしく解説

SUMIF関数とは

記事『Excel関数の検索テクニック』で説明した通り、Excel標準機能の[関数の挿入]ダイアログ/[関数の引数]ダイアログを大体のことは書かれているので、活用して詳しく解説します。

ダイアログの使い方は、上記記事を参照していただければと思います。

SUMIFS関数,クロス集計表,複数

特定の条件に一致した数値の合計を求めます

[関数の挿入]ダイアログより


特定の表現が紛らわしいですが、1つ以上の条件という意味と考えて問題ないです。

SUMは「和」IFは「条件」Sは「複数形」ですから、その名の通りです。

複数形だがら、IF+Sになっていそうですね。

SUMIFS関数,クロス集計表,複数



Excel関数名が分からない場合は日本語訳してみると、発見できるかもしれません。

SUMIF関数の構文

SUMIFS関数,クロス集計表,複数
=SUMIFS(合計対象範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...)

条件範囲1を合致したデータに関して、条件1の中で合計対象範囲のデータから合計するいうことです。

SUMIFS関数は1つ以上の条件を設定できるため、条件分を引数を設定できます。

条件範囲と条件で1セットになっているイメージです。

条件範囲1と条件1 → 条件範囲2と条件2 → 条件範囲3と条件3 のように、条件を1つ以上することができます。

第1引数:合計対象範囲

合計対象範囲 には合計対象の実際のセルを指定します

[関数の挿入]ダイアログより

その名の通り、「合計対象範囲」を指します。
本問題では、Sales列の$J$2:$J$701 が合計対象範囲になります。

SUMIFS関数,クロス集計表,複数

第2引数:条件範囲1

条件範囲1 には、特定の条件で値を求める対象となるセル範囲を指定します

上記に補足すると、
条件範囲1は、検索条件の範囲を指します。

本問題では、Date列の$M$2:$M$701 条件範囲1になります。

SUMIFS関数,クロス集計表,複数
第3引数:条件1

条件1 には計算の対象となるセルを定義する条件を数値、式、または、文字列で指定します

条件1」には、検索条件を設定します。

本問題では、表側の$R3&$S3 が条件1になります。

SUMIFS関数,クロス集計表,複数
第4引数:条件範囲2

『条件範囲と条件で1セットになっているイメージです。】とお伝えしたように、

1つ以上の条件がある場合は、第4引数も設定しています。

本問題では、Product列の$C$2:$C$701 条件範囲2になります。

第3引数:条件2

『条件範囲と条件で1セットになっているイメージです。】とお伝えしたように、

1つ以上の条件がある場合は、第4引数も設定しています。

条件2」には、検索条件を設定するため、

本問題では、Product列の$C$2:$C$701 条件2になります。

引数を入力しみてる

ダイアログボックスに沿って、引数を入力しみてます。

SUMIFS関数,クロス集計表,複数
[関数の引数]ダイアログの方が、解説付きで、さらに、引数の入力結果数式の結果まで表示されます。

基本的に、直接入力よりも、使いやすく、間違いに気づきやすいです。

ただし、引数オプションを確認する場合などは直接入力も有効です。

引数オプションとは、Excel関数の引数の中で、予め用意されており、関数の特定の振る舞いや設定を制御できます。

そのため、状況に応じての使い分けが最も有効です。

参考記事は末尾に記載されており、全て拝読いただきたいのですが、特に関連のある記事は次の通りです。

小話:外観上は数値のケース

SUM関数では、引数に文字列を設定してならないとルールがあります。

ただし、外観上は数値の場合には正常に動作します。

例えば、以下の2つのケースではどちらも「999」という値が数値に見えます。

書式は文字列だが、外観上は数値



しかし、2行目の「999」は書式が文字列です。

本来ならばルール違反であり、SUM関数はエラーを返すべきですが、
実際には正常に動作します。

おそらく、裏で数値変換が行われているものと考えられます。

そのため、書式が文字列でも外観上数値であれば、SUM関数は正常に動作するようです。

最後に

SUMIFS関数を紹介しました。

SUMIFS関数は、SUM関数を拡張させたSUMIF関数を拡張させた関数でした。

具体的に復習すると・・・

SUM関数に検索条件を追加し、拡張させたのが、SUMIF関数

さらに、

SUMIF関数に検索条件を1つ以上にできるようにし、拡張させたのが、SUMIFS関数

といった具合です。

1つ以上の条件の元で、合計を求めることができます。

SUMIFS関数を使えば、ピボットテーブルのように、合計値を求めることができます。

ご拝読ありがとうございました。

参考記事

Excel関数自体の原理原則に関する記事です。こちらを参照すると、個別の関数の理解がさらに深まるでしょう。