2025/7/4

複数条件付きでカウントする関数の違い(COUNTIF,COUNTIFS,DCOUNT,DCOUNTAなど)【エクセル】

Thumbnail for 複数条件付きでカウントする関数の違い(COUNTIF,COUNTIFS,DCOUNT,DCOUNTAなど)【エクセル】

はじめに

エクセルには 個数をカウントする関数 が多くあります。 その中で、 条件指定が可能な関数 の違いについてまとめました。

条件指定ができない関数 COUNT, COUNTA, COUNTBLANK, SUBTOTAL , AGGREGATE については、 こちらにまとめました。

ここでは、以下について取り扱います:

  • 関数の比較
  • AND条件の設定例
  • OR条件の設定例
  • 細かな違い(セルの認識、判定・条件分岐関数の組込み)
  • 使い分け

関数の比較表

個数をカウントする関数(条件指定可能なもののみ)の一覧を、下の表にまとめました。

各関数の使用例はAND条件の設定例にあります。

関数名条件設定の形式複数条件の設定
(AND条件)

(OR条件)
判定・条件分岐
関数の組込み
エラー値の扱いあいまい検索
(ワイルドカード)
備考対応
バージョン
COUNTIF文字列❌ 不可🟡 一部可能 ※❌ 不可✅ 無視✅ 使用可単一条件のみ2010 ~
COUNTIFS✅ 可能複数条件可
DCOUNTデータベース✅ 可能数値のみをカウント + 設定条件でフィルタ
DCOUNTA✅ カウント対象空白セル以外をカウント + 設定条件でフィルタ
SUMPRODUCT配列演算✅ 可能🟡 エラーを出力❌ 使用不可慣れが必要
FILTER+COUNTA🟡 1を出力可読性・再利用性が高い2021, 365 ~

※ 関数を複数回使用することで対応可能(ただしCOUNTIFのみでは「 重複あり のOR条件」は不可)

AND条件の設定例

それぞれの関数を使って、 ANDの複数条件を設定した例 を下記に示します。 複数条件の設定の基本形となります。

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

ABCDEFGHIJKLM
1ラベル番号条件1条件2
21000関数名(ラベル)(番号)カウント数(カウント行を個別選択)
31001COUNTIF関数<>10055
42000COUNTIFS関数<>100>=133
52001
6A-1000DCOUNT関数ラベル番号11
7A-1001<>100>=1
8A-1002DCOUNTA関数ラベル番号33
9<>100>=1
10
11SUMPRODUCT関数100でない1以上33
12FILTER+COUNTA100でない1以上33

数式の例

関数条件設定の形式数式の例備考
COUNTIF文字列=COUNTIF( A2:A8, "<>100" )AND条件の設定は不可
COUNTIFS=COUNTIFS( A2:A8, "<>100", B2:B8, ">=1" )
DCOUNTデータベース=DCOUNT( A1:B8,1, G6:I7 )
DCOUNTA=DCOUNTA( A1:B8,1, G8:I9)
SUMPRODUCT配列演算=SUMPRODUCT( (A2:A8<>G11)*(B2:B8>=1) )
FILTER+COUNTA=COUNTA( FILTER (A2:A8, (A2:A8<>100)*(B2:B8>=1) ))

DCOUNT, DCOUNTA関数の違い

DCOUNT, DCOUNTA関数の違いは、 カウントする対象を数値のみとするか空白セル以外とするか です。

DCOUNTDCOUNTA関数の処理は以下のイメージです。

  • 処理1: 最初に選択範囲の数値のみ / 空白セル以外のカウントを行う。
  • 処理2: 条件指定によってフィルタする。

(他の条件指定可能なカウント関数と異なり、 処理1 によるカウント対象の選択が入る)
この 処理1 のカウント対象が、DCOUNTDCOUNTA関数とで変わります。

処理1カウントを行う列は、関数の第2引数によって指定された列 です。
上記の例では、数値文字列が混在した列(A列)を指定しているため、DCOUNTDCOUNTA関数の結果が異なっています。
DCOUNT関数の第2引数を1から2に変更すると、DCOUNTA関数と同じ結果となります。

OR条件の設定例

OR条件では、 条件の間に「重複が ない 場合」と「重複が ある 場合」によって書き方が変わります。

「重複が ない / ある 場合」とは、 「OR条件を同時に満たすことが ない / ある 場合」のことです。
例:

重複の有無OR条件の例OR条件を同時に満たす条件
重複が ない 場合「1以下」OR「5以上」「1以下かつ5以上」→ 存在しない
重複が ある 場合「1以上」OR「5以下」「1以上かつ5以下」→ 存在する
(1, 2, 3, 4, 5など)

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

重複のないOR条件を設定したカウント関数の使用例を示します。 設定条件は「番号が0以下」OR「番号が2以上」です (「番号が0以下」かつ「番号が2以上」は存在しないため、重複の ない 場合に相当)。 COUNTIF, DCOUNT関数については省略しています。

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

ABCDEFGHIJKLM
1ラベル番号条件1条件2
21000関数名(番号)(番号)カウント数(カウント行を個別選択)
31001COUNTIFS関数<=0>=244
42000
52001DCOUNTA関数番号44
6A-1000<=0
7A-1001>=2
8A-1002
9SUMPRODUCT関数0以下2以上44
10FILTER+COUNTA0以下2以上44

数式の例

関数条件設定の形式数式の例備考
COUNTIFS文字列=COUNTIFS(B2:B8, "<=0" ) + COUNTIFS(B2:B8, ">=2" )関数を複数回使用
(各条件ごとにカウント)
DCOUNTAデータベース=DCOUNTA( A1:B8, 1, G5:I7 )
SUMPRODUCT配列演算=SUMPRODUCT( A2:B8<=0)+(B2:B8>=2) )
FILTER+COUNTA=COUNTA( FILTER( B2:B8, (B2:B8<=0)+(B2:B8>=2) ))

2つの条件に重複がある場合

重複のあるOR条件を設定したカウント関数の使用例を示します。 設定条件は「ラベルが100でない」OR「番号が1以上」です
(「ラベルが100でない」かつ「番号が1以上」が存在する (「ラベルがA-100」かつ「番号が2」など)ため、 重複の ある 場合に相当)。

COUNTIF, DCOUNT関数については省略しています。

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

ABCDEFGHIJKLM
1ラベル番号条件1条件2
21000関数名(ラベル)(番号)カウント数(カウント行を個別選択)
31001COUNTIFS関数<>100>=166
42000
52001DCOUNTA関数ラベル番号66
6A-1000<>100
7A-1001>=1
8A-1002
9SUMPRODUCT関数100でない1以上66
10FILTER+COUNTA100でない1以上66

数式の例

関数条件設定の形式数式の例備考
COUNTIFS文字列=COUNTIFS(A2:A8, "<>100" ) + COUNTIFS(B2:B8, ">=1" )
- COUNTIFS(A2:A8, "<>100", B2:B8, ">=1")
関数を複数回使用
(各条件の和 - 重複分)
DCOUNTAデータベース=DCOUNTA(A1:B8, 1, G5:I7 )
SUMPRODUCT配列演算=SUMPRODUCT( ( (A2:A8<>100)+(B2:B8>=1)>0 )*1 )数値を論理値(2値)化するため (...)>0
論理値を数値に戻すため (...)*1
FILTER+COUNTA=COUNTA( FILTER(A2:A8, (A2:A8<>100)+(B2:B8>=1) ))SUMPRODUCT関数の条件式よりシンプル

細かな挙動の違いと関数の組込み

条件指定が可能なカウント関数は、 空白(空白セル、空文字)やエラー値を含むセルに対する応答が異なる場合があります。

また、条件指定の中で、 IF関数グループやIS関数グループなどの判定・条件分岐関数を組み込みたい場合は、 SUMPRODUCT / FILTER+COUNTA関数以外では使えません。

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

空白セル、空文字、エラー値は、 ほとんどの関数でカウント可能です。 ただし、 SUMPRODUCTFILTER+COUNTA関数は、エラー値を参照するとうまくカウントできなくなる ので注意が必要です。

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

ABCDEFGHIJKLM
1ラベル番号条件1条件2
21000関数名(ラベル)(番号)カウント数(カウント行を個別選択)
31001COUNTIFS関数<>100>=166
42000
52001DCOUNTA関数ラベル番号55
62<>100>=1
72
8#N/A2SUMPRODUCT関数100でない1以上#N/A1
9A-1000FILTER+COUNTA100でない1以上11
10A-1001
11A-1002
関数空白セルの扱い空文字の扱いエラー値の扱い備考
COUNTIF✅ カウント可能✅ カウント可能✅ カウント可能
COUNTIFS
DCOUNT第2引数:⏭️無視
条件指定:✅ カウント可能
第2引数:⏭️無視
条件指定:✅ カウント可能
第2引数:⏭️無視
条件指定:✅ カウント可能
「第2引数」は 処理1 を行う範囲、
「条件指定」は 処理2 の範囲
DCOUNTA第2引数:🔢カウント
条件指定:✅ カウント可能
第2引数:🔢カウント
条件指定:✅ カウント可能
SUMPRODUCT✅ カウント可能✅ カウント可能❌ エラーを出力IFERROR関数の組込みで
エラー回避可能
FILTER+COUNTA1を出力

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

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

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

ABCDEFGHIJKLM
1ラベル番号条件1条件2
21000関数名(ラベル)(番号)カウント数(カウント行を個別選択)
31001SUMPRODUCT関数100でない1以上#N/A1
42000 ↓
52001 +IFERROR関数55
62
72
8#N/A2
9A-1000FILTER+COUNTA100でない1以上11
10A-1001 ↓
11A-1002 +IFERROR関数55

数式の例

関数条件設定の形式数式の例
SUMPRODUCT配列演算=SUMPRODUCT(
IFERROR((A2:A11<>100)*(B2:B11>=1),0)
)
FILTER+COUNTA=COUNTA( FILTER(A2:A11,
IFERROR( (A2:A11<>100)*(B2:B11>=1), FALSE)
))

使い分けの目安

条件指定が可能なカウント関数の使い分けの目安は、 以下の通りです。

  • 単純な条件 / AND条件 のとき COUNTIFS関数 (COUNTIF関数)
  • データベース形式で条件設定 / OR条件 のとき DCOUNTA関数 (DCOUNT関数)
  • 複雑な条件 / 判定・条件分岐関数を組み込む とき SUMPRODUCT / FILTER+COUNTA関数