複数条件付きでカウントする関数の違い(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の複数条件を設定した例 を下記に示します。
「(カウント行を個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 備考 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条件を設定したカウント関数の使用例を示します。 COUNTIF
, DCOUNT
関数については省略しています。
「(カウント行を個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 備考 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でない」かつ「番号が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
、
論理値を数値に戻すため(...)*1
FILTER
+COUNTA
= COUNTA
(FILTER
(A2:A8, (A2:A8<>100)+(B2:B8>=1) ))✅ SUMPRODUCT
関数の条件式よりシンプル
細かな挙動の違いと関数の組込み
条件指定が可能なカウント関数は、
また、条件指定の中で、 IF
関数グループやIS
関数グループなどの判定・条件分岐関数を組み込みたい場合は、 SUMPRODUCT
/ FILTER
+COUNTA
関数以外では使えません。
空白やエラー値を含むときの挙動の違い
空白セル、空文字、エラー値は、 SUMPRODUCT
とFILTER
+COUNTA
関数は、エラー値を参照するとうまくカウントできなくなる ので注意が必要です。
「(カウント行を個別選択)」列のセルをホバーすると、
条件分岐関数を組み込んだ例
SUMPRODUCT
とFILTER
+COUNTA
関数は、判定や条件分岐を行う関数が組み込めます。 IFERROR
関数を使い、エラー値を無視するようにした例を示します。
「(カウント行を個別選択)」列のセルをホバーすると、
数式の例
関数 条件設定の形式 数式の例 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
関数