エクセル関数応用
複数条件の合計・件数

Excel関数の解説、関数サンプルと高等テクニック
公開日:2013年5月以前 最終更新日:2021-08-10

複数条件の合計・件数


複数条件の合計、複数条件の件数を求める関数式です。


この記事は最初2010年頃(まだ2003がかなり使われていた頃)に書いたものです。
それをOffice365でスピルが実装されてからスピルと新関数の方法を追記しました。


サンプルデータ

以下の表で説明します。

A B C
1 品名 サイズ 売上
2 りんご L 180
3 みかん S 150
4 りんご L 300
5 りんご M 200
6 みかん M 450
7 りんご S 200
8 みかん L 280
9 みかん M 200
10 みかん L 120


複数条件の合計

「みかん」の「M」の合計売上を求めます。

SUMIFS関数

まず、2007以降ならSUMIFSが使えますので、問題はないと思います。

=SUMIFS(C2:C10,A2:A10,"みかん",B2:B10,"M")

SUMIFS(合計範囲,条件範囲1,条件値1[,条件範囲2,条件値2,...]),

SUMPRODUCT関数

しかし、2003ではSUMIFSは使えません。
では、どうするか、

=SUMPRODUCT(C2:C10*(A2:A10="みかん")*(B2:B10="M"))

SUMPRODUCT(配列1,配列2,・・・)
SUMPRODUCT関数は、配列を乗算しその合計を求めます。

配列数式(CSE)

さらに別の方法で、配列数式を使用します。

{=SUM(C2:C10*(A2:A10="みかん")*(B2:B10="M"))}

=SUM(C2:C10*(A2:A10="みかん")*(B2:B10="M")) これを入力し、Ctrl+Shift+Enterで確定させる。
Ctrl+Shift+Enterは、配列数式の入力です。

SUMIFS以外は、ちょっと理解しづらいと思います。
エクセルでは、論理値は、真(true)は1偽(False)は0です。
つまり、1つでも条件を満たさない行は、*0が入るので、全て真の行のみ合計されるという理屈です。
まあ、そんなものだと理解しておく程度で構いません。


複数条件の件数

「みかん」の「M」の件数を求めます。
考え方は合計とほぼ同様です。

SUMIFS関数

まず、2007以降ならCOUNTIFSが使えますので、問題はないと思います。

=COUNTIFS(A2:A10,"みかん",B2:B10,"M")

COUNTIFS(条件範囲1,条件値1[,条件範囲2,条件値2,...]),

SUMPRODUCT関数

しかし、2003ではCOUNTIFSは使えません。
では、どうするか、

=SUMPRODUCT((A2:A10="みかん")*(B2:B10="M"))

SUMPRODUCT(配列1,配列2,・・・)
SUMPRODUCT関数は、配列を乗算しその合計を求めます。

配列数式(CSE)

さらに別の方法で、配列数式を使用します。

{=COUNT(IF((A2:A10="みかん")*(B2:B10="M"),1))}

=COUNT(IF((A2:A10="みかん")*(B2:B10="M"),1)) これを入力し、Ctrl+Shift+Enterで確定させる。
Ctrl+Shift+Enterは、配列数式の入力です。

売上の場合はそのまま合計しましたが、件数なので代わりに、「1」を指定しています。


スピルと新関数

新関数のFILTER関数で絞り込んでから、合計したり件数をカウントすることができます。
上のSUMが合計、下のCOUNTが件数です。

=SUM(FILTER(C2:C10,(A2:A10="みかん")*(B2:B10="M")))
=COUNT(FILTER(C2:C10,(A2:A10="みかん")*(B2:B10="M")))

しかし、そもそもスピルするのですから配列をそのままSUMやCOUNTすることができます。

=SUM(C2:C10*(A2:A10="みかん")*(B2:B10="M"))
=COUNT(IF((A2:A10="みかん")*(B2:B10="M"),1))

これらは配列数式で入れた数式と全く同じです。
つまり、スピル以前は配列数式(CSE)で入れる必要があった数式が、そのままの数式として入れることが出来るようになったという事です。
スピルについては以下を参照してください。
スピルについて
・スピルとは ・スピルの数式例 ・ゴースト ・スピル範囲での独特な挙動について ・スピルのエラー表示 ・スピル範囲演算子 ・暗黙的なインターセクション演算子 ・従来のスピルしないエクセルとの互換性についての注意点 ・スピル関連記事
FILTER関数(範囲をフィルター処理)
・FILTER関数の書式 ・FILTER関数使用例のサンプルデータ ・FILTER関数の基本 ・空白セルを0ではなく空白にする場合 ・複数条件のフィルター ・関数を使ってフィルター ・横(列)でフィルター ・表示する列を選択する ・FILTER関数の結果を他の関数で使う ・スピルによって新しく追加された関数




同じテーマ「エクセル関数応用」の記事

1年後の日付、○か月後の日付
複数条件の合計・件数
入力規則のリストを、追加・削除に自動対応で作成
入力規則のリストを、2段階の絞り込みで作成1
入力規則のリストを、2段階の絞り込みで作成2
ピポットテーブルの参照範囲を、追加・削除に自動対応で作成
関数を使って行列を入れ替える方法
複数条件で検索し、複数データを取得する方法
関数で銀行型丸め(最近接偶数への丸め)を行う方法
関数で他シートへ並べ替える方法(サンプル:ABC分析)
VLOOKUPを他の関数でやる方法


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ