複数条件付きで合計する関数の違い(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条件を設定した合計する関数の使用例を示します。 SUMIF
関数については省略しています。
「(合計されるセルを個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 備考 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) ) )
細かな挙動の違いと関数の組込み
条件指定が可能な合計値の算出関数は、
また、条件指定の中で、 IF
関数グループやIS
関数グループなどの判定・条件分岐関数を組み込みたい場合は、 SUMPRODUCT
/ FILTER
+SUM
関数以外では使えません。
空白やエラー値を含むときの挙動の違い
ほとんどの関数は、 SUMPRODUCT
とFILTER
+SUM
関数は、エラー値を参照するとエラー値を返す ので注意が必要です。
「(合計されるセルを個別選択)」列のセルをホバーすると、
各関数ごとの、条件の 判定値の中 と 合計する値の中 での 空白セル
, 空文字
, エラー値
の扱いをまとめると、
関数 | 空白セル の扱い | 空文字 の扱い | エラー値 の扱い | 備考 |
---|---|---|---|---|
SUMIF | 判定値の中: ✅条件と比較可 合計する値の中: ⏭️無視 | 判定値の中: ✅条件と比較可 合計する値の中: ⏭️無視 | 判定値の中: ✅条件と比較可 *合計する値の中:*🟡エラーを出力 | - |
SUMIFS | ||||
DSUM | ||||
SUMPRODUCT | 判定値の中: ✅条件と比較可 合計する値の中: 🟡エラーを出力 | 🟡エラーを出力 | IFERROR 関数の組込みでエラー回避可能 | |
FILTER +SUM | 判定値の中: ✅条件と比較可 合計する値の中: ⏭️無視 |
条件分岐関数を組み込んだ例
SUMPRODUCT
とFILTER
+SUM
関数は、判定や条件分岐を行う関数が組み込めます。 IFERROR
関数を使い、エラー値を無視するようにした例を示します。
「(合計されるセルを個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 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
関数