2025/7/18

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

Thumbnail for 複数条件付きで合計する関数の違い(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の複数条件を設定した例 を下記に示します。 複数条件の設定の基本形となります。

「(合計されるセルを個別選択)」列のセルをホバーすると、 合計されているセルがハイライトされます。

ABCDEFGHIJKLMN
1カテゴリランク数値条件1条件2
2A1100関数名(カテゴリ)(ランク)数値の合計(合計されるセルを個別選択)
3A2100SUMIF関数<>A500500
4B1100SUMIFS関数<>A>=2300300
5B2100
6C1100DSUM関数カテゴリランク300300
7C2100<>A>=2
8C3100
9SUMPRODUCT関数Aでない2以上300300
10FILTER+SUMAでない2以上300300

数式の例

関数条件設定の形式数式の例備考
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条件の例OR条件を同時に満たす条件
重複が ない 場合「1以下」OR「5以上」「1以下かつ5以上」→ 存在しない
重複が ある 場合「1以上」OR「5以下」「1以上かつ5以下」→ 存在する
(1, 2, 3, 4, 5など)

2つの条件に重複がない場合

重複のないOR条件を設定した合計する関数の使用例を示します。 設定条件は「カテゴリがCでない」OR「ランクが2越え」です (「カテゴリがCでない」かつ「ランクが2越え」は存在しないため、重複の ない 場合に相当)。 SUMIF関数については省略しています。

「(合計されるセルを個別選択)」列のセルをホバーすると、 合計されているセルがハイライトされます。

ABCDEFGHIJKLMN
1カテゴリランク数値条件1条件2
2A1100関数名(カテゴリ)(ランク)数値の合計(合計されるセルを個別選択)
3A2100SUMIFS関数<>C>2500500
4B1100
5B2100DSUM関数カテゴリランク500500
6C1100<>C
7C2100>2
8C3100
9SUMPRODUCT関数Cでない2越え500500
10FILTER+SUMCでない2越え500500

数式の例

関数条件設定の形式数式の例備考
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条件を設定した合計する関数の使用例を示します。 設定条件は「カテゴリがCでない」OR「ランクが2未満」です (「カテゴリがCでない」かつ「ランクが2未満」が存在する (例:「カテゴリがA」かつ「ランクが1」など)ため 重複の ある 場合に相当)。

SUMIF関数については省略しています。

「(合計されるセルを個別選択)」列のセルをホバーすると、 合計されているセルがハイライトされます。

ABCDEFGHIJKLMN
1カテゴリランク数値条件1条件2
2A1100関数名(カテゴリ)(ランク)数値の合計(合計されるセルを個別選択)
3A2100SUMIFS関数<>C<2500500
4B1100
5B2100DSUM関数カテゴリランク500500
6C1100<>C
7C2100<2
8C3100
9SUMPRODUCT関数Cでない2未満500500
10FILTER+SUMCでない2未満500500

数式の例

関数条件設定の形式数式の例備考
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関数以外では使えません。

空白やエラー値を含むときの挙動の違い

ほとんどの関数は、 条件の判定値の中に空白セル、空文字、エラー値が入っていても、 条件と比較して判定が可能です (例:「"A"でない」の条件設定で空文字をマッチできる) 。 ただし、 SUMPRODUCTFILTER+SUM関数は、エラー値を参照するとエラー値を返す ので注意が必要です。

「(合計されるセルを個別選択)」列のセルをホバーすると、 合計されているセルがハイライトされます。

ABCDEFGHIJKLMN
1カテゴリランク数値条件1条件2
2A1100関数名(カテゴリ)(ランク)数値の合計(合計されるセルを個別選択)
3A2100SUMIFS関数<>A>=2400400
4B1100
5B2100DSUM関数カテゴリランク400400
62100<>A>=2
72100
8#N/A2100SUMPRODUCT関数Aでない2以上#N/A#N/A
9FILTER+SUMAでない2以上#N/A#N/A

各関数ごとの、条件の 判定値の中合計する値の中 での 空白セル, 空文字, エラー値 の扱いをまとめると、 以下の通りです。

関数空白セルの扱い空文字の扱いエラー値の扱い備考
SUMIF判定値の中: ✅条件と比較可
合計する値の中: ⏭️無視
判定値の中: ✅条件と比較可
合計する値の中: ⏭️無視
判定値の中: ✅条件と比較可
*合計する値の中:*🟡エラーを出力
-
SUMIFS
DSUM
SUMPRODUCT判定値の中: ✅条件と比較可
合計する値の中: 🟡エラーを出力
🟡エラーを出力IFERROR関数の組込みで
エラー回避可能
FILTER+SUM判定値の中: ✅条件と比較可
合計する値の中: ⏭️無視

条件分岐関数を組み込んだ例

SUMPRODUCTFILTER+SUM関数は、判定や条件分岐を行う関数が組み込めます。 ここでは、IFERROR関数を使い、エラー値を無視するようにした例を示します。

「(合計されるセルを個別選択)」列のセルをホバーすると、 合計されているセルがハイライトされます。

ABCDEFGHIJKLMN
1カテゴリランク数値条件1条件2
2A1100関数名(カテゴリ)(ランク)数値の合計(合計されるセルを個別選択)
3A2100SUMPRODUCT関数Aでない2以上#N/A#N/A
4B1100 ↓
5B2100 +IFERROR関数300300
62100
72100
8#N/A2100FILTER+SUMAでない2以上#N/A#N/A
9 ↓
10 +IFERROR関数300300

数式の例

関数条件設定の形式数式の例
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関数