複数条件付きカウント関数の違い(COUNTIF, COUNTIFS, DCOUNT, DCOUNTA)

はじめに
エクセルには 個数をカウントする関数 が多くあります。
条件指定ができない関数
ここでは、以下について取り扱います:
- 関数の比較
- AND条件の設定例
- OR条件の設定例
- 細かな違い(セルの認識、判定・条件分岐関数の組込み)
- 使い分けの目安
関数の比較表
個数をカウントする関数(条件指定可能なもののみ)の一覧を、下の表にまとめました。
各関数の使用例はAND条件の設定例にあります。
関数名 | 条件設定の形式 | 複数条件の設定 (AND条件) | (OR条件) | 判定・条件分岐 関数の組込み | エラー値の扱い ※2 | あいまい検索 (ワイルドカード) | 備考 | 対応 バージョン |
---|---|---|---|---|---|---|---|---|
COUNTIF | 文字列 | ❌ 不可 | 🟡 一部可能 ※1 | ❌ 不可 | ✅ カウント対象 | ✅ 使用可 | 単一条件のみ | 全バージョン |
COUNTIFS | ✅ 可能 | 複数条件可 | ||||||
DCOUNT | データベース | ✅ 可能 | ✅ 可能 | ❌ 不可 | ✅ 無視 | ✅ 使用可 | 数値のみをカウント + 設定条件でフィルタ | 全バージョン |
DCOUNTA | ✅ カウント対象 | 空白セル以外をカウント + 設定条件でフィルタ | ||||||
SUMPRODUCT | 配列演算 | ✅ 可能 | ✅ 可能 | ✅ 可能 | 🟡 エラーを出力 | ❌ 使用不可 | 慣れが必要 | 全バージョン |
FILTER+COUNTA | ❌ 1を出力 | 可読性・再利用性が高い | 2021, 365 ~ |
※1 関数を複数回使用することで対応可能(ただしCOUNTIFのみでは「 重複あり のOR条件」は不可)
※2 詳細は後述
AND条件の設定例
それぞれの関数を使って、 ANDの複数条件を設定した例 を下記に示します。
「(カウント行を個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 備考 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関数の違いは、 カウントする対象を数値のみとするか空白セル以外とするか です。
DCOUNTとDCOUNTA関数の処理は以下のイメージです。
- 処理1: 最初に選択範囲の数値のみ / 空白セル以外のカウントを行う。
- 処理2: 条件指定によってフィルタする。
(他の条件指定可能なカウント関数と異なり、 処理1 によるカウント対象の選択が入る)
この 処理1 のカウント対象が、DCOUNTとDCOUNTA関数とで変わります。処理1 の カウントを行う列は、関数の第2引数によって指定された列 です。
上記の例では、数値と文字列が混在した列(A列)を指定しているため、DCOUNTとDCOUNTA関数の結果が異なっています。
DCOUNT関数の第2引数を1から2に変更すると、DCOUNTA関数と同じ結果となります。
OR条件の設定例
OR条件では、
「重複が ない / ある 場合」とは、
例:
重複の有無 | OR条件の例 | OR条件を同時に満たす条件 |
---|---|---|
重複が ない 場合 | 「1以下」OR「5以上」 | 「1以下かつ5以上」→ 存在しない |
重複が ある 場合 | 「1以上」OR「5以下」 | 「1以上かつ5以下」→ 存在する (1, 2, 3, 4, 5など) |
2つの条件に重複がない場合
重複のないOR条件を設定したカウント関数の使用例を示します。
「(カウント行を個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 備考 COUNTIFS 文字列 =COUNTIFS(B2:B8, "<=0" ) + COUNTIFS(B2:B8, ">=2" ) 関数を複数回使用
(各条件ごとにカウント)DCOUNTA データベース =DCOUNTA( A1:B8, 1, G5:I7 ) - SUMPRODUCT 配列演算 =SUMPRODUCT( B2:B8<=0)+(B2:B8>=2) ) FILTER+COUNTA =COUNTA( FILTER( B2:B8, (B2:B8<=0)+(B2:B8>=2) ))
2つの条件に重複がある場合
重複のあるOR条件を設定したカウント関数の使用例を示します。
(「ラベルが100でない」かつ「番号が1以上」が存在する
COUNTIF, DCOUNT関数については省略しています。
「(カウント行を個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 備考 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、
論理値を数値に戻すため (...)*1FILTER+COUNTA =COUNTA( FILTER(A2:A8, (A2:A8<>100)+(B2:B8>=1) )) ✅ SUMPRODUCT関数の条件式よりシンプル
細かな挙動の違いと関数の組込み
条件指定が可能なカウント関数は、
また、条件指定の中で、
空白やエラー値を含むときの挙動の違い
空白セル、空文字、エラー値は、
「(カウント行を個別選択)」列のセルをホバーすると、
条件分岐関数を組み込んだ例
SUMPRODUCTとFILTER+COUNTA関数は、判定や条件分岐を行う関数が組み込めます。
「(カウント行を個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 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関数
関連記事











