本記事では、Excel 2021を使用して検証および画像の作成を行っています。
記事内で紹介する数式や機能は、お使いのExcelのバージョンによっては動作が異なる場合があります。
「Excelで、特定の条件に合うデータだけを合計したいんだけど、SUMIFやSUMIFSだと、なんだか数式が複雑になっちゃうんだよな…」
「複数の条件があって、しかも条件範囲と合計範囲がバラバラだったりすると、もうお手上げ!」
まず、そんなお悩みをお持ちのあなた、この記事が解決の糸口になるかもしれません!
Excelでのデータ集計、特に「条件付き合計」は非常によく使う機能ですよね。
多くの方が SUMIF関数や SUMIFS関数 を活用されていることと思います。
これらの関数は非常に便利です。
しかし、条件が複雑になったり、集計したい範囲が複数にまたがっていたりすると、数式が長くなってしまったり、管理が難しくなったりすることがあります。
そこで今回は、一見すると基本的な関数である SUM関数と IF関数を組み合わせた「SUM(IF())」というテクニックに焦点を当てます。
この SUM(IF()) を使うことで、複雑な条件付き合計もスッキリとした数式で実現できます。
さらに、可読性も向上するケースがあるのです!
本記事では、まず SUM(IF()) の基本的な使い方から応用的なテクニックまでを解説します。
その後、おなじみの SUMIFS関数や、少しマニアックかもしれない SUMPRODUCT関数、
それぞれの関数の特徴と使いどころを探っていきます。
この記事を読めば、あなたの「条件付き合計」の引き出しが格段に増えるはず!
関数をただ覚えるだけでなく、
「組み合わせて使う」ことの面白さやパワフルさも感じていただければ幸いです。
今回のサンプルデータ
はじめに、今回使用するサンプルデータをご紹介します。
以下のような「社員別の月別売上データ」があるとします。

例えば、このデータから「社員Bさんの1月から5月までの合計売上」を求めたい、といったケースを考えていきましょう。
もちろん、SUMIFSでも可能ですが、SUM(IF())を使うとどうなるでしょうか?
さあ、SUM(IF())の世界へ一緒に踏み出しましょう!
サンプルファイルも用意しましたので、ぜひダウンロードして実際に手を動かしながら読み進めてみてください。
excel_de_himatsubushi026.xlsx (10KB)
はじめに:条件付き合計の課題とSUM(IF())の魅力
まず、Excelでデータを集計する際、「特定の条件に一致する数値だけを合計したい」という場面は非常に多いですよね。
例えば、「営業部だけの売上合計」「特定商品の在庫数合計」などですね。
こうした条件付き合計の代表的な関数として、SUMIF関数やSUMIFS関数があります。
- SUMIF(条件範囲, 条件, 合計範囲): 1つの条件で合計する場合に便利です。
- SUMIFS(合計範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], …): 複数のAND条件で合計する場合に強力です。
これらは非常に便利な関数です。
以下、SUMIFとSUMIFSをまとめてSUMIFSと書いている場合があります。
(SUMIFでできることはSUMIFSでもできるためです。)
しかし、例えば以下のようなケースでは数式が複雑になったり、対応が難しかったりすることがあります。
- 複数のOR条件で合計したい場合(例: 「商品A」または「商品B」の売上合計)。SUMIFSを複数回使うか、工夫が必要になります。
- 条件範囲と合計したい範囲がずれている、または複数列にまたがっている場合。SUMIFSでは合計範囲を1つしか指定できません。(下の画像)

「確かに、SUMIFSでOR条件を扱うとき、ちょっと面倒だな…」
「データが複雑な表になっていると、SUMIFSだけじゃ対応しきれないこともあったりするよね。」
そんなときに輝きを放つのが、今回ご紹介する「SUM(IF())」という組み合わせです。
SUM関数とIF関数はExcelの基本中の基本と言える関数です。
しかし、これらを配列数式として組み合わせることで、SUMIFSでは表現しにくい複雑な条件に対応できます。
また、柔軟な範囲指定に対応した合計計算が可能になります。
そして何より、場合によってはSUMIFSを何度も繰り返すよりも数式がシンプルになり、可読性が向上するという大きなメリットがあります。
先ほどのサンプルデータ(社員別月別データ)を例にとってみましょう。
例えば、「社員Aさんまたは社員Cさんの全期間の合計売上」を求めたいとします。

あるいは、「社員Bさんの3月以降の合計売上」といった条件で集計したい場合です。

SUMIFSでももちろん可能ですが、SUM(IF())を使うことで、より直感的な数式で表現できるかもしれません。
これから、そのSUM(IF())の魅力と具体的な使い方をじっくりと見ていきましょう。
SUM(IF())の基本:構文と仕組み
SUM(IF())の構文
まず、SUM(IF())の基本的な構文は以下のようになります。
=SUM(IF(条件, 合計範囲, [偽の場合の値]))
次に、ポイントは、この数式を配列数式として入力する必要があるという点です。
(一部の新しいExcelバージョンでは自動的に配列処理されます)
配列数式とは?
通常、数式は単一の値を扱います。
しかし、配列数式は複数の値(配列)を一度に処理できる数式です。
古いExcelバージョンでは、数式を入力した後に CTRL + SHIFT + ENTER キーを同時に押して確定する必要がありました。
これにより、数式が自動的に中括弧 { } で囲まれます。
(例: {=SUM(IF(条件, 合計範囲))} )

Microsoft 365などの新しいExcelでは、この操作が不要な場合が多くなっています(スピル機能)。
仕組みの解説
それでは、SUM(IF())がどのように動作するのか、その仕組みを分解して見てみましょう。
IF関数の動作
まず、IF(条件, 合計範囲, [偽の場合の値])
の部分です。
IF関数が「条件」を評価します。
このとき、条件範囲や合計範囲が複数のセル範囲の場合、IF関数はそれぞれのセルに対して条件を判定し、結果として配列を返します。
条件に一致した(TRUEだった)場合は「合計範囲」の対応するセルの値を返します。
一致しなかった(FALSEだった)場合は指定があれば「偽の場合の値」(通常は0やFALSE)を返します。
偽の場合の値を省略すると、FALSEが返されます。

SUM関数の動作
次に、SUM(...)
の部分です。
SUM関数がIF関数から返された配列(数値の集まり)を受け取ります。
SUM関数は、その配列内の数値のみを合計します。
(配列内にFALSEや文字列が含まれていても、それらは無視されます)。

具体例:「社員Bの1月から5月までの合計を求める」
それでは、サンプルデータを使って「社員Bの1月から5月までの合計売上」をSUM(IF())で計算してみましょう。

結果を表示したいセルに以下の数式を入力します。
=SUM(IF(A2:A6="社員B", B2:F6))
Excel 2021 以降やMicrosoft 365では、このままENTERでOKです。
古いバージョンの場合は CTRL + SHIFT + ENTER で確定してください。

解説
まず、A2:A6="社員B"
の部分です。
A2からA6の各セルが「社員B」かどうかを判定します。
結果は {FALSE; TRUE; FALSE; FALSE; FALSE} のような真偽値の配列になります。

次に、IF({FALSE; TRUE; FALSE; FALSE; FALSE}, B2:F6)
の部分です。
条件がTRUEだった行(社員Bの行)に対応するB列からF列の値(社員Bの1月~5月の売上データ)を返します。
条件がFALSEだった行の値はFALSEとなります(偽の場合の値を省略しているため)。
結果として、以下のような2次元の配列が内部的に生成されます。

最後に、SUM(...)
の部分です。
上記のIF関数が返した配列内の数値をすべて合計します。
この例では、社員Bの行の売上データ 200, 210, 180, 220, 200 が合計されます。
そして、1010 が返されます。
ポイント:合計範囲の柔軟性
この例では、条件範囲(A2:A6)は1列です。
しかし、合計範囲(B2:F6)は複数列にまたがっています。
SUMIFS関数では、合計対象範囲は1つの列(または行)しか指定できません。

しかし、SUM(IF())ではこのように柔軟に指定できるのが大きなメリットです。
IF関数内で複数の条件を指定する方法(AND/OR)
まず、SUM(IF())の強力な点は、IF関数の条件部分を工夫することです。
これにより、複数のAND条件やOR条件を比較的簡単に表現できることです。
- AND条件: 条件を掛け算 * でつなぎます。 (条件1)*(条件2)
- Excelでは、論理値のTRUEは計算上1、FALSEは0として扱われます。両方の条件がTRUE(1*1=1)のときのみ、IFの条件がTRUEとなります。
- OR条件: 条件を足し算 + でつなぎます。 (条件1)+(条件2)
- 少なくとも一方の条件がTRUE(1+0=1 や 0+1=1 や 1+1=2)のとき、IFの条件が0以外(つまりTRUE扱い)となります。
これらについては、次の「SUM(IF())の応用」で詳しく見ていきましょう。
SUM(IF())の応用:複数条件と範囲指定
まず、SUM(IF())の基本が分かったところで、次はより複雑な条件での合計計算に応用してみましょう。
特に、複数のAND条件やOR条件を扱う方法を解説します。
そして、名前定義を使った可読性の向上について解説します。
複数条件の指定方法
AND条件:(条件1)*(条件2)
はじめに、複数の条件がすべて満たされた場合に合計したいとします。
その場合は、各条件を括弧 () で囲み、アスタリスク * で掛け合わせます。
=SUM(IF((条件1)*(条件2), 合計範囲))
これは、条件1がTRUE(1)かつ条件2がTRUE(1)の場合のみ、1*1=1 (TRUE) となります。
それ以外は 1*0=0 (FALSE) または 0*0=0 (FALSE) となることを利用しています。

手順:例「社員A」かつ「3月以降」の合計を求める
「社員A」の「3月から5月までの合計」を求めるには、以下のような数式が考えられます。
=SUM(IF((A2:A6="社員A"), D2:F6))

社員Aの3月~5月は 150+110+130 = 390

もし、条件として「特定の月」も加えたい場合、例えば「社員Aの3月の売上」であれば、少し工夫が必要です。
=SUM(IF((A2:A6="社員A")*(B1:F1="3月"), B2:F6))

OR条件:(条件1)+(条件2)
次に、複数の条件のうち、いずれか一つでも満たされた場合に合計したいとします。
その場合は、各条件を括弧 () で囲み、プラス + で足し合わせます。
=SUM(IF((条件1)+(条件2) > 0, 合計範囲))
条件1がTRUE(1)または条件2がTRUE(1)の場合、(条件1)+(条件2) の結果は1以上(TRUE扱い)になります。
両方FALSE(0)のときのみ 0+0=0 (FALSE) となります。

>0
をつけることで、確実にTRUE/FALSEの判定に持ち込めます。
しかし、SUM関数は数値以外を無視するため、多くの場合 >0
は省略可能です。
手順:例「社員A」または「社員C」の合計を求める
「社員A」または「社員C」の全期間(1月~5月)の合計売上を求めます。
=SUM(IF(((A2:A6="社員A")+(A2:A6="社員C"))>0, B2:F6))

解説
まず、(A2:A6="社員A")
の部分です。
これは、社員AであればTRUE(1)、それ以外はFALSE(0)の配列です。

次に、(A2:A6="社員C")
の部分です。
これは、社員CであればTRUE(1)、それ以外はFALSE(0)の配列です。

そして、((A2:A6="社員A")+(A2:A6="社員C"))
の部分です。
上記2つの配列を足し合わせます。
社員Aまたは社員Cの行が1以上、それ以外の行は0になります。

>0
で、結果が0より大きければTRUE、0ならFALSEの配列に変換します。
IF(..., B2:F6)
で、条件がTRUEの行に対応するB2:F6の値を返します。
最後にSUM(...)
で、返された値を合計します。

SUMIFSで同様のOR条件を実現しようとすると、少し手間がかかります。
社員Aの合計を出すSUMIFSと社員Cの合計を出すSUMIFSを別々に作る必要があります。
そして、それらを足し合わせる必要が出てくることがあります。
SUM(IF())なら1つの数式で表現できるのがメリットです。
条件範囲と合計範囲に名前定義を使う
まず、数式が長くなったり、同じ範囲を何度も参照したりする場合、Excelの「名前定義」機能を使うと非常に便利です。
例えば、サンプルデータの以下の範囲に名前を定義したとします。
- A2:A6セル範囲 → 「社員リスト」
- B2:F6セル範囲 → 「売上データ」
- D2:F6セル範囲 → 「売上データ_3月以降」

こうすることで、先ほどの数式は以下のように書き換えられます。
1.「社員Bの1月から5月までの合計を求める」(名前定義使用)
=SUM(IF(社員リスト="社員B", 売上データ))

2.「社員A」かつ「3月以降」の合計を求める(名前定義使用)
=SUM(IF((社員リスト="社員A"), 売上データ_3月以降))

3.「社員A」または「社員C」の合計を求める(名前定義使用)
=SUM(IF(((社員リスト="社員A")+(社員リスト="社員C"))>0, 売上データ))
どうでしょう?
セル番地が直接書かれているよりも、数式の意味が格段に分かりやすくなったと思いませんか?
名前定義は、数式の可読性を高め、メンテナンスを容易にする非常に有効なテクニックです。
ぜひ活用してみてください。
SUMPRODUCTとの比較:シンプルさと柔軟性
「SUM(IF())も便利そうだけど、SUMPRODUCT関数でも同じようなことができるって聞いたことがあるよ?」
その通りです!
SUMPRODUCT関数も、条件付き合計や複雑な計算において非常に強力な関数の一つです。
ここでは、SUM(IF())とSUMPRODUCTを比較してみましょう。
SUMPRODUCT関数を使った条件付き合計
まず、SUMPRODUCT関数は、本来、複数の配列の対応する要素同士を掛け算します。
そして、その合計を求める関数です。

しかし、引数の与え方を工夫することで、条件付き合計にも応用できます。
SUMPRODUCT関数で「社員Bの1月から5月までの合計売上」を計算する場合、
一般的には以下のように書けます。
=SUMPRODUCT((A2:A6="社員B") * (B2:F6))

結果はSUM(IF())と同じ1010。)
解説
まず、(A2:A6="社員B")
の部分です。
これもSUM(IF())のときと同様に、社員Bの行がTRUE(1)、それ以外がFALSE(0)となる配列を返します。
例えば {0;1;0;0;0}です。
次に、(B2:F6)
の部分です。
これは合計したい売上データの配列です。
そして、(A2:A6="社員B") * (B2:F6)
の部分です。

ここで、先の真偽値の配列と売上データの配列が要素ごとに掛け算されます。
社員Bの行(条件がTRUE=1)では、1 * 売上値 となり、売上値そのものが計算されます。
社員B以外の行(条件がFALSE=0)では、0 * 売上値 となり、結果は0になります。
結果として、条件に合致する行の売上だけが残り、他は0となる配列が生成されます。
最後に、SUMPRODUCT(...)
の部分です。
上記で生成された配列のすべての要素を合計します。

結果として、社員Bの売上のみが合計されます。
SUM(IF()) と SUMPRODUCT の比較
比較項目一覧
- 基本構文 (社員Bの合計):
- SUM(IF()):
=SUM(IF(A2:A6="社員B", B2:F6))
- SUMPRODUCT:
=SUMPRODUCT((A2:A6="社員B")*(B2:F6))
- SUM(IF()):
- CTRL+SHIFT+ENTER:
- SUM(IF()): 古いExcelでは必要
- SUMPRODUCT: 原則不要
- 計算速度:
- SUM(IF()): 配列が大きくなると遅くなる傾向
- SUMPRODUCT: 比較的安定しているが、複雑な条件では影響あり
- 条件の記述:
- SUM(IF()): IF関数内でAND/ORを * / + で表現
- SUMPRODUCT: 引数内で条件配列を * (AND) / + (OR) で組み合わせる
- 可読性:
- SUM(IF()): IF関数のロジックが分かりやすいと感じる人も
- SUMPRODUCT: 慣れるとスッキリ見えるが、初見では分かりにくいことも
どちらを使うのが適切か?
まず、SUMPRODUCTは、CTRL+SHIFT+ENTERが不要なため、古いExcelでも入力がやや楽です。
次に、複数の条件を (条件1)*(条件2)*(合計範囲) のようにスッキリ書ける場合があります。
さらに、配列の積和計算という性質上、より複雑な集計(例:加重平均など)にも応用しやすいです。
一方、SUM(IF())は、IF関数のネストや AND(), OR() 関数と組み合わせることで、より複雑な論理条件を組み立てやすいと感じる人もいます。
また、条件に合致しない場合に返す値を明示的にコントロールしたい場合に、
IF関数の第3引数が使える場合があります。
結論として、どちらの関数も非常に強力で、多くの場合、同じ結果を得ることができます。
数式の見た目の好みや、チーム内でのExcelスキルの標準に合わせて使い分けるのが良いでしょう。
普段、SUMPRODUCT関数は使いますか?
もし使ったことがなければ、この機会に試してみるのも面白いかもしれませんね!
SUMIFSとの比較:SUM(IF())の優位性
さて、条件付き合計の定番といえば、やはりSUMIFS関数ですよね。
ここでは、SUM(IF())とSUMIFSを比較します。
そして、特にSUM(IF())が優位に働く場面を見ていきましょう。
SUMIFS関数を使った条件付き合計
まず、SUMIFS関数の構文は以下の通りです。
=SUMIFS(合計対象範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)
この場合、SUMIFSで「社員B」の「1月から5月までの合計」を求めるには、少し工夫が必要です。
SUMIFSの合計対象範囲は単一の列(または行)である必要があります。
そのため、月ごとにSUMIFSを実行して合計するか、作業列を使うなどの方法が考えられます。
もし、データが縦持ち(1列目に社員名、2列目に月、3列目に売上)であれば、
SUMIFSは非常に使いやすいです。

しかし、今回のサンプルデータのように横に月が展開している場合、
単純なSUMIFSでは1つの数式で「1月~5月の合計」を出すのは難しいです。
例えば、各月の合計を出すSUMIFSを作り、それを足し合わせるなら以下のようになります。
=SUMIFS(B2:B6, A2:A6, "社員B") + SUMIFS(C2:C6, A2:A6, "社員B") + SUMIFS(D2:D6, A2:A6, "社員B") + SUMIFS(E2:E6, A2:A6, "社員B") + SUMIFS(F2:F6, A2:A6, "社員B")

見ての通り、数式が非常に長くなってしまいますね。
月が増えれば増えるほど、この数式はさらに長くなります。
SUM(IF()) と SUMIFS の比較
比較項目一覧
- 基本構文 (社員Bの1-5月合計):
- SUM(IF()):
=SUM(IF(A2:A6="社員B", B2:F6))
- SUMIFS: 上記のような複数SUMIFSの合計、または作業列が必要
- SUM(IF()):
- 合計範囲:
- SUM(IF()): 複数列/行を柔軟に指定可能
- SUMIFS: 単一の列/行のみ
- OR条件の扱い:
- SUM(IF()): (条件A)+(条件B) で比較的容易
- SUMIFS: 複数SUMIFSの合計、または配列数式と組み合わせるなど工夫が必要
- AND条件の扱い:
- SUM(IF()): (条件A)*(条件B)
- SUMIFS: 引数で複数条件を指定 (こちらが直感的)
- CTRL+SHIFT+ENTER:
- SUM(IF()): 古いExcelでは必要
- SUMIFS: 不要
SUM(IF())の優位性
まず、SUM(IF())の最大のメリットの一つは、合計範囲の柔軟性です。
合計範囲を複数列(または複数行)にまたがって指定できる点です。
今回の「社員Bの1月~5月の合計」の例では、SUM(IF())なら B2:F6 とシンプルに指定できました。

これに対し、SUMIFSでは工夫が必要でした。
次に、複雑なOR条件の扱いもSUM(IF())の得意とするところです。
(条件A)+(条件B) のように、OR条件を比較的直感的に数式内に組み込めます。
SUMIFSで複数のOR条件を扱うよりもスッキリ書けることが多いです。
IF関数の中で条件を組み立てるため、どのようなロジックで集計しているのかが、慣れれば追いやすくなることがあります。
もちろん、単純なAND条件で、条件範囲と合計範囲が明確に1列ずつ対応している場合は、
SUMIFSの方が直感的です。
しかし、データ構造が複雑だったり、集計条件が入り組んでいたりする場合には、
SUM(IF())が強力な武器となるでしょう。
まとめ:状況に応じた最適な関数の選択と「組み合わせる」ことの重要性
今回は、条件付き合計を実現する様々な関数、特にSUM(IF())の魅力と使い方に焦点を当てて解説しました。
最後に、これまで紹介してきたSUMIF/SUMIFS、SUM(IF())、SUMPRODUCTの特徴と使い分けを改めて整理しましょう。
各関数の特徴と使いどころ
- SUMIF/SUMIFS:
- 特徴: 条件付き合計の基本。SUMIFSは複数AND条件に強い。
- 使いどころ: 条件が比較的シンプルで、条件範囲と合計範囲が明確に1対1対応している場合。
- SUM(IF()):
- 特徴: SUMとIFの組み合わせ。配列数式として動作。条件ロジックと合計範囲の指定が柔軟。
- 使いどころ:
- 合計範囲が複数列/行にまたがる場合。
- 複雑なOR条件や、IF関数のネストで表現したい条件がある場合。
- 数式の可読性を保ちつつ、ある程度複雑な条件を1つの数式でまとめたい場合。
- SUMPRODUCT:
- 特徴: 配列の積和計算。条件を配列の乗算で表現。CTRL+SHIFT+ENTER不要。
- 使いどころ: SUM(IF())とほぼ同様のことができる。条件の記述が (条件1)*(条件2) の方がスッキリ感じる場合。加重平均など、より高度な配列計算にも。
特に、SUM(IF())は、条件範囲と合計範囲が異なる場合や、複雑な条件を柔軟に設定したい場合に非常に有効な選択肢となります。
基本関数の組み合わせでありながら、応用範囲が広いのが魅力です。
Excelの関数は、単独で使うだけでなく、「組み合わせる」ことで、
その可能性は飛躍的に広がります。
今回紹介したSUM(IF())もその一例です。
ぜひ、皆さんのExcel業務の中で「この条件、SUMIFSだと難しいな…」と感じたときに、SUM(IF())やSUMPRODUCTといった選択肢を思い出してみてください。
この記事を読んで、SUM(IF())を使ってみたくなりましたか?
今回の記事が、皆さんのExcelスキルアップの一助となれば幸いです!