複数条件付きで合計する関数の違い(SUMIF, SUMIFS, DSUM, SUMPRODUCT)【エクセル】

はじめに
エクセルには 数値を合計する関数 が多くあります。
ここでは、以下について取り扱います:
- 関数の比較
- AND条件の設定例
- OR条件の設定例
- 細かな違い(セルの認識、判定・条件分岐関数の組込み)
- 使い分けの目安
関数の比較表
条件を指定して合計する関数の一覧を、下の表にまとめました。
各関数の使用例はAND条件の設定例 (後述) にあります。
関数名 | 条件設定の形式 | 複数条件の設定 (AND条件) | (OR条件) | 判定・条件分岐 関数の組込み | エラー値の扱い ※2 | あいまい検索 (ワイルドカード) | 備考 | 対応 バージョン |
---|---|---|---|---|---|---|---|---|
SUMIF | 文字列 | ❌ 不可 | 🟡 一部可能 ※1 | ❌ 不可 | ✅ 条件と比較可 | ✅ 使用可 | 単一条件のみ | 全バージョン |
SUMIFS | ✅ 可能 | 複数条件可 | ||||||
DSUM | データベース | ✅ 可能 | ✅ 可能 | ❌ 不可 | ✅ 条件と比較可 | ✅ 使用可 | 数値のみを合計 + 設定条件でフィルタ | 全バージョン |
SUMPRODUCT | 配列演算 | ✅ 可能 | ✅ 可能 | ✅ 可能 | 🟡 エラーを出力 | ❌ 使用不可 | 慣れが必要 | 全バージョン |
FILTER+SUM | 可読性・再利用性が高い | 2021, 365 ~ |
※1 関数を複数回使用することで対応可能(ただしSUMIFのみでは「 重複あり のOR条件」は不可)
※2 詳細は後述
AND条件の設定例
それぞれの関数を使って、 ANDの複数条件を設定した例 を下記に示します。
「(合計されるセルを個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 備考 SUMIF 文字列 =SUMIF(A2:A8, "<>A", C2:C8) AND条件の設定は不可 SUMIFS =SUMIFS(C2:C8, A2:A8,"<>A", B2:B8, ">2") - DSUM データベース =DSUM( A1:B8,1, G6:I7 ) SUMPRODUCT 配列演算 =SUMPRODUCT((A2:A8<>"A") * (B2:B8>=2) * C2:C8) FILTER+SUM =SUM( FILTER( C2:C8, (A2:A8<>"A") * (B2:B8>=2) ))
OR条件の設定例
OR条件では、
「重複が ない / ある 場合」とは、
例:
重複の有無 | OR条件の例 | OR条件を同時に満たす条件 |
---|---|---|
重複が ない 場合 | 「1以下」OR「5以上」 | 「1以下かつ5以上」→ 存在しない |
重複が ある 場合 | 「1以上」OR「5以下」 | 「1以上かつ5以下」→ 存在する (1, 2, 3, 4, 5など) |
2つの条件に重複がない場合
重複のないOR条件を設定した合計する関数の使用例を示します。
「(合計されるセルを個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 備考 SUMIFS 文字列 =SUMIFS( C2:C8, A2:A8, "<>C" ) + SUMIFS( C2:C8, B2:B8, ">2") 関数を複数回使用
(各条件ごとに合計)DSUM データベース =DSUM( A1:C8, 3, H5:J7 ) - SUMPRODUCT 配列演算 =SUMPRODUCT( ((A2:A8<>"C") + (B2:B8>2) ) * C2:C8 ) FILTER+SUM =SUM( FILTER( C2:C8, (A2:A8<>"C") + (B2:B8>2) ))
2つの条件に重複がある場合
重複のあるOR条件を設定した合計する関数の使用例を示します。
SUMIF関数については省略しています。
「(合計されるセルを個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 備考 SUMIFS 文字列 =SUMIFS(C2:C8, A2:A8, "<>C") + SUMIFS(C2:C8, B2:B8, "<2") - SUMIFS(C2:C8, A2:A8, "<>C", B2:B8, "<2" ) 関数を複数回使用
(各条件の和 - 重複分)DSUM データベース =DSUM(A1:C8, 3, H5:J7) - SUMPRODUCT 配列演算 =SUMPRODUCT( ( (A2:A8<>"C") + (B2:B8<2) - (A2:A8<>"C") * (B2:B8<2) ) * C2:C8 ) FILTER+SUM =SUM( FILTER( C2:C8, (A2:A8<>"C") + (B2:B8<2) - (A2:A8<>"C") * (B2:B8<2) ) )
細かな挙動の違いと関数の組込み
条件指定が可能な合計値の算出関数は、
また、条件指定の中で、
空白やエラー値を含むときの挙動の違い
ほとんどの関数は、
「(合計されるセルを個別選択)」列のセルをホバーすると、
各関数ごとの、条件の 判定値の中 と 合計する値の中 での
関数 | 空白セルの扱い | 空文字の扱い | エラー値の扱い | 備考 |
---|---|---|---|---|
SUMIF | 判定値の中: ✅条件と比較可 合計する値の中: ⏭️無視 | 判定値の中: ✅条件と比較可 合計する値の中: ⏭️無視 | 判定値の中: ✅条件と比較可 *合計する値の中:*🟡エラーを出力 | - |
SUMIFS | ||||
DSUM | ||||
SUMPRODUCT | 判定値の中: ✅条件と比較可 合計する値の中: 🟡エラーを出力 | 🟡エラーを出力 | IFERROR関数の組込みで エラー回避可能 | |
FILTER+SUM | 判定値の中: ✅条件と比較可 合計する値の中: ⏭️無視 |
条件分岐関数を組み込んだ例
SUMPRODUCTとFILTER+SUM関数は、判定や条件分岐を行う関数が組み込めます。
「(合計されるセルを個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 SUMPRODUCT 配列演算 =SUMPRODUCT(
IFERROR((A2:A8<>"A")*(B2:B8>=2) * C2:C8, 0)
)FILTER+SUM =SUM( FILTER(C2:C8,
IFERROR( (A2:A8<>"A")*(B2:B8>=2), FALSE)
))
使い分けの目安
条件指定が可能な合計する関数の使い分けの目安は、
- 単純な条件 / AND条件 のとき SUMIFS関数 (SUMIF関数)
- データベース形式で条件設定 / OR条件 のとき DSUM関数
- 複雑な条件 / 判定・条件分岐関数を組み込む とき SUMPRODUCT / FILTER+SUM関数
関連記事











