Excelで条件付きの件数を集計しようとしたとき、「COUNTIFSでは式が複雑になりすぎる」「OR条件が増えて管理できない」「なぜか結果が0になる」といった壁に直面した経験はないでしょうか。
そのような場面で力を発揮するのが、データベース関数の一つである DCOUNT関数 です。
DCOUNT関数は、条件をセル範囲として“見える形”で管理できるため、条件が多い集計や、後から条件を変更する業務に非常に向いています。一方で、条件範囲の作り方や「数値だけを数える」という特性を正しく理解していないと、思い通りの結果が得られず、難しい関数だと感じてしまいがちです。
本記事では、DCOUNT関数の基本的な考え方から、つまずきやすい条件範囲の作法、AND・OR条件の整理方法、よくあるエラーの原因と対処法、COUNTIFSとの使い分けまでを体系的に解説いたします。
「なぜその結果になるのか」を理解しながら読み進めることで、DCOUNT関数を実務で安心して使いこなせるようになる構成です。
※本コンテンツは「記事制作ポリシー」に基づき、正確かつ信頼性の高い情報提供を心がけております。万が一、内容に誤りや誤解を招く表現がございましたら、お手数ですが「お問い合わせ」よりご一報ください。速やかに確認・修正いたします。
DCOUNT関数でできることと向いている集計
DCOUNTは条件に合う数値の件数を数える
DCOUNTは、Excelの「データベース関数」の一つです。名前の通り、データベース(=見出し行付きの表)を前提としており、条件に合うレコードのうち、指定フィールドに数値が入っている件数を返します。
ここで誤解が起きやすいのが、「件数=行数」だと思い込むケースです。DCOUNTは行数を数える関数ではありません。数える対象はあくまで指定した列(フィールド)に入っている“数値”のセル数です。
たとえば、次のような表を想定します。
A列:日付
B列:地域
C列:担当
D列:売上(本来は数値が入る)
E列:備考(文字列が入る)
「地域=東京」の行が10行あったとしても、売上(D列)が空白の行が2行、文字列(例:「未入力」)が1行混じっていれば、DCOUNTの結果は 7 になります。つまりDCOUNTは、条件付きで「数値がちゃんと入っている件数」を確認するのに向いています。入力漏れチェック、データ品質の確認、数値列の欠損検知などに役立ちます。
COUNTIFSよりDCOUNTが便利になる場面
COUNTIFSは汎用性が高く、多くの現場で標準的に使われています。一方で、条件が複雑になってくると、COUNTIFSは次のような課題が出やすくなります。
OR条件(AまたはB)を式で表現すると長くなり、ミスが増える
条件が増えるほど式が読みづらく、引き継ぎやレビューが難しい
条件の変更が頻繁だと、式を修正するたびに壊れやすい
DCOUNTは、条件を「式の中」ではなく「シート上の条件範囲」に置けます。つまり、関数自体は比較的短く保ちつつ、条件だけをセルで差し替えて運用できます。
条件が変わることが前提の集計(月次レポート、週次の営業集計、監査チェック、検品の抽出条件など)では、DCOUNTは「壊れにくい設計」に寄せやすいのが利点です。
ExcelとAccessで同名機能がある点に注意
「DCOUNT(Excel)」と「DCount(Access)」は名称が似ていますが、目的と書き方が異なります。
Excel:DCOUNT(データベース関数)
見出し行を含む表範囲を対象に、条件範囲で絞り込み、指定列の数値セル数を数える
Access:DCount(定義域集計・ドメイン集計)
テーブルやクエリを対象に、条件式(文字列)で絞り込み、件数を返すことが多い
検索結果では両方が混ざることがあるため、「Excelで使いたいのにAccessの説明を読んでいた」という混乱が起こりがちです。本記事はExcelのDCOUNTを中心に解説し、Access側はFAQで整理いたします。
DCOUNT関数の書式と引数の意味
データベースは見出し行を含める
DCOUNTの基本書式は次のとおりです。
DCOUNT(データベース, フィールド, 条件)
このうち「データベース」は、集計対象となる表範囲です。DCOUNTで最も多いミスの一つが、見出し行を含めずに範囲指定してしまうことです。DCOUNTはデータベース形式(見出し行+データ行)を前提としているため、基本は次のように指定します。
例:A1:E101が表(A1:E1が見出し)
データベース:
A1:E101
また、表の行数が増減する運用なら、次のいずれかにしておくと安定します。
Excelの「テーブル」にして、構造化参照(例:
Table1[#All])を使う余裕を持った範囲指定ではなく、テーブル化で伸縮に追従させる
ただし、DCOUNTに慣れるまでは「通常のセル範囲」で理解を固め、その後テーブル化に進むのが取り組みやすいことが多いです。
フィールドは列名か列番号で指定する
「フィールド」は、どの列を数えるか(数値が入っているセル数の対象列)を指定します。指定方法は主に2つです。
列見出し名(文字列)で指定
"売上"のように、見出しと同じ文字列を指定します。
例:DCOUNT(A1:E101,"売上",G1:G2)
列番号で指定
データベース範囲の左端の列を「1」として数えます。
例:A1:E101の「売上」がD列なら、A=1, B=2, C=3, D=4 なので4を指定します。
例:DCOUNT(A1:E101,4,G1:G2)
現場で便利なのは、トラブル時の切り分けに列番号指定を使うことです。列見出し名指定は読みやすい反面、次のような落とし穴があります。
見出しの全角半角、余計なスペース、表記揺れ(売上/売り上げ)が混ざる
見出しが途中で変更され、式が突然合わなくなる
「同じ文字に見えるのに一致していない」問題は地味に厄介です。列番号指定はそうした揺れの影響を受けにくいため、安定運用の観点でも選択肢になります。
条件は条件範囲で指定する
DCOUNTの最大の特徴が「条件」を条件範囲(セル範囲)で指定することです。ここが理解できると、DCOUNTはぐっと扱いやすくなります。
条件範囲の基本構造は次のとおりです。
1行目:見出し(フィールド名)
2行目以降:条件値(文字列、数値、比較演算子、ワイルドカードなど)
例:地域が「東京」の条件範囲(G1:G2)
G1:地域
G2:東京
この「G1の見出し」が、データベース側の見出し(B1が地域なら、そのセルの文字)と一致している必要があります。ここがズレると、条件が効かず、結果が0になったり、意図しない集計になったりします。
DCOUNT関数の条件範囲の作り方
条件範囲の基本ルール
条件範囲を作るときは、次のルールを守るだけでミスが大きく減ります。
条件範囲の1行目は「見出し」
見出しはデータベースの見出しと一致させる
条件範囲はデータベース範囲の外側に置く
条件セルは“必要なものだけ”埋めればよい(空欄は条件なし扱い)
たとえば、A1:E101に表があり、B列が「地域」、D列が「売上」だとします。東京の売上件数(売上が数値の件数)を出したいなら、次の構成が基本です。
条件範囲:G1:G2
G1:地域
G2:東京
式:
=DCOUNT(A1:E101,"売上",G1:G2)
ポイントは「売上が数値の件数」であることです。東京の行数ではなく、東京かつ売上が数値の行が数えられます。行数が欲しい場合は、DCOUNTではなくDCOUNTAや別設計を検討します(FAQと使い分けで整理します)。
AND条件とOR条件の書き分け
DCOUNTは、条件の組み合わせを「行」と「列」で表現します。ここが理解できると、OR条件がとても扱いやすくなります。
同じ行に並ぶ条件(複数列に条件を書く)= AND条件
別の行に書く条件(行を分ける)= OR条件
AND条件の例
「地域=東京」かつ「担当=佐藤」の売上件数を数える
条件範囲:G1:H2
G1:地域 H1:担当
G2:東京 H2:佐藤
式:
=DCOUNT(A1:E101,"売上",G1:H2)
同じ2行目に条件が並んでいるので、両方を満たす(AND)行だけが対象になります。
OR条件の例
「地域=東京」または「地域=大阪」の売上件数を数える
条件範囲:G1:G3
G1:地域
G2:東京
G3:大阪
式:
=DCOUNT(A1:E101,"売上",G1:G3)
条件が行で分かれているので、東京の条件行、または大阪の条件行に一致する(OR)ものが対象になります。
複合ORの考え方
「(地域=東京 かつ 担当=佐藤)または(地域=大阪 かつ 担当=田中)」のようなORは、次のように条件範囲を2行にして表現できます。
条件範囲:G1:H3
G1:地域 H1:担当
G2:東京 H2:佐藤
G3:大阪 H3:田中
この形は、COUNTIFSで式を2本書いて足すよりも、条件の見通しが良くなることが多いです。
ワイルドカードと比較演算子の書き方
条件セルには、単純な一致(東京)のほか、比較演算子やワイルドカードも使えます。
比較演算子(数値)
">=100":100以上"<500":500未満
条件セルに「>=100」と入力する場合、Excel内部では文字列として扱われますが、DCOUNTの条件としては正しく解釈されます。
さらに、セル参照で柔軟にしたい場合は、次のように組み立てます。
例:H2に閾値(100)が入っている
条件セル:
=">="&H2
日付の比較
日付は特につまずきやすいので、次のコツが有効です。
文字として「2025/01/01」と打つより、日付セルにして参照する
条件セルは
=">="&開始日セルのようにする表側の日付が“文字列”になっていないか確認する(後述)
ワイルドカード(部分一致)
*(アスタリスク):任意の文字列例:
"*東京*"は「東京を含む」
?(クエスチョン):任意の1文字例:
"A?3"は「A+任意1文字+3」に一致
部分一致は便利ですが、データの表記揺れ(全角半角、余計なスペース)に弱い面があります。うまく一致しないときは、データ側を整えるか、補助列で正規化するのが堅実です。
条件範囲テンプレの作り方
DCOUNTを「一度だけの集計」ではなく「運用」に強くする方法が、条件範囲テンプレです。おすすめは次の作り方です。
条件範囲を固定位置(例:シート右側)に確保する
使う可能性のある見出しを横に並べる(地域、担当、商品、日付、売上など)
条件行を複数行(OR用)確保する
使わない条件セルは空欄でOKにする
例えば、G1:K1に「地域」「担当」「商品」「日付」「売上」を置き、G2:K6まで空けておきます。すると、集計担当者は「必要な条件だけ書く」「ORが必要なら行を増やす」という操作だけで済みます。関数側は条件範囲全体(G1:K6など)を参照しておき、条件セルの入力内容で結果が変わる設計にできます。
このテンプレを作ると、次の効果が出やすいです。
条件が“見える”のでレビューがしやすい
条件変更が式修正ではなくセル入力になるため事故が減る
OR条件が増えても管理が崩れにくい
DCOUNT関数の実例で覚えるパターン集
数値入力済み件数で入力漏れを見つける
DCOUNTの強みが最も分かりやすいのが、入力漏れの検知です。例えば「売上が本来必ず入力されるはず」という業務では、DCOUNTで「売上が数値の件数」を取り、別の方法で「対象レコード数」を取れば、差分が入力漏れの可能性になります。
例:地域が東京のレコード数と、売上入力済み件数を比較
レコード数(東京の行数)が欲しい場合
選択肢1:売上以外の必ず入る列をDCOUNTAで数える
選択肢2:別列に常に1を入れる列(チェック列)を作り、その列をDCOUNTで数える
ここでは分かりやすく「チェック列」を作る方法を紹介します。
表に「チェック」列を追加し、全行に数値の1を入れる(または自動入力)
東京のレコード数:
DCOUNT(表範囲,"チェック",東京条件)東京の売上入力済み件数:
DCOUNT(表範囲,"売上",東京条件)2)と3)の差が、売上未入力(または文字列入力)を含む可能性
この設計なら、「行数が欲しい」「売上入力済み件数が欲しい」を同じDCOUNTの枠組みで比較でき、レポートの説明がしやすくなります。
日付条件で期間内の件数を数える
日付条件は、次のように「開始日」「終了日」をセルに置いて参照すると運用しやすくなります。
開始日:M2(例:2025/01/01)
終了日:N2(例:2025/01/31)
条件範囲は次のように作れます(AND条件として同じ行に置きます)。
G1:日付 H1:日付
G2:
=">="&$M$2H2:="<="&$N$2
同じ見出し「日付」を2列に置けるのがポイントです。これで「日付が開始日以上」かつ「日付が終了日以下」を表現できます。
式は次のイメージになります。
=DCOUNT(A1:E101,"売上",G1:H2)
さらに、地域や担当も条件に加えるなら、条件範囲を横に伸ばして同じ行に追加します(AND条件)。日付と他条件を併用した集計は、月次レポートや期間キャンペーンの集計で頻出です。
部分一致で条件に合う件数を数える
顧客名や商品名など、表記が長い項目では部分一致が役立ちます。
見出し:商品名
条件:
"*プレミアム*"
これで「商品名に“プレミアム”を含む」レコードが対象になります。
部分一致の集計で現場がつまずく典型は「余計なスペース」です。例えば「プレミアム 」のように末尾スペースが混じると、見た目は同じでも一致しない場合があります。そうしたデータは、補助列でTRIM(前後の空白除去)やCLEAN(制御文字除去)を使って整えた列を作り、その列を条件対象にすると安定します。
DCOUNT関数でよくあるエラーと直し方
条件範囲に見出しがない
DCOUNTがうまく動かない原因のトップクラスが「条件範囲の見出し不足」です。
NG例:条件範囲が「東京」だけ
OK例:上段に「地域」、下段に「東京」
さらに、見出しがあるのに動かない場合は、次の“微妙な不一致”が疑われます。
見出しに余計な空白が入っている
全角・半角が違う
「地域」ではなく「地域名」になっている
対策としては、データベースの見出しセルをそのままコピーして条件範囲の見出しに貼り付けるのが確実です。「手入力で合わせる」のは、運用が長くなるほど事故要因になりがちです。
フィールド名の不一致と列番号指定のコツ
フィールド名指定(”売上”など)が原因で集計がズレることがあります。そういうときは、列番号指定に切り替えて切り分けるのが早道です。
DCOUNT(A1:E101,"売上",条件)が怪しいDCOUNT(A1:E101,4,条件)に変えて結果が合うか確認する
列番号で正しく集計できるなら、フィールド名(見出し文字列)の不一致が原因の可能性が高いです。見出しセルに余計なスペースがないか、統一されているかを確認し、必要ならTRIMで整えた見出しに統一する(または見出し自体を修正する)と安定します。
また、列の並び替えや列追加が頻繁に起きる運用では、列番号指定は列位置が変わると壊れます。その場合は、列名指定に戻すのが安全です。つまり「列位置が固定かどうか」で、列名指定と列番号指定の適性が変わります。
数値として認識されていない
DCOUNTは「数値セル」を数えるため、見た目が数字でも“文字列の数字”は数えません。特に次のケースが多いです。
CSV取り込みで数字が文字列になった
先頭にアポストロフィ(’)が付いている
全角数字が混ざっている
「1,000円」のように単位が混じっている
対処法は状況によって変わりますが、代表的には次の通りです。
「区切り位置」を使って数値に変換する
VALUE関数で数値化する(ただし単位混じりは前処理が必要)
置換で「円」「,」などを除去し、数値に直す
補助列を作り、集計は補助列を対象にする
運用の観点では「集計対象列が数値として整っている」状態を作るのが最も確実です。DCOUNTの式を工夫するより、データ整形の工程を整えるほうが、長期的にトラブルが減ります。
結果が0になるときの切り分けチェック
結果が0になったときは、闇雲に式を直すより、チェックリストで順番に潰すほうが早く収束します。以下を上から確認してください。
データベース範囲に見出し行が含まれている
条件範囲に見出し行がある(最低2行構成)
条件範囲の見出しはデータベースの見出しと完全一致している
条件値(東京など)がデータの表記と一致している(全角半角、空白、表記揺れ)
フィールド列は“数値”として認識されている(文字列の数字ではない)
AND/ORの組み方が意図通り(同じ行=AND、別行=OR)
条件が厳しすぎて該当ゼロになっていない(条件を一つずつ外して確認)
特に「見出し一致」「数値認識」の2点は、DCOUNTの性質上、影響が大きいポイントです。
DCOUNT関数とCOUNTIFSの使い分け
条件の可視化とメンテ性で選ぶ
DCOUNTとCOUNTIFSは、どちらが上というより「運用の目的」で選ぶのが合理的です。目安としては次の通りです。
COUNTIFSが向く
条件が少なく、固定で、式を一度作ればほぼ変えない
参照範囲がテーブル化されていて、列を足しても式を増やしたくない
チーム内で条件のレビューがあまり発生しない
DCOUNTが向く
条件が増減する(例:担当者、地域、期間、商品カテゴリなどを切り替える)
条件を“見える形”で共有し、レビュー・監査したい
OR条件が多く、式の増殖を避けたい
DCOUNTは「条件をセルで管理する」という設計思想です。条件を分離することで、関数そのものは短く保ち、条件の運用に耐える形になります。
OR条件が多いならDCOUNTが有利
OR条件が多いほど、DCOUNTの良さが出ます。COUNTIFSでORを表現する典型は「COUNTIFS(…) + COUNTIFS(…) + …」という形になりがちで、次の事故が起こりやすくなります。
条件の追加漏れ
条件の重複(二重カウント)
どの条件が入っているか第三者が把握しづらい
DCOUNTなら、OR条件は「条件行を増やす」だけで表現できます。条件表がそのまま仕様書のような役割になり、レビューや引き継ぎがしやすくなります。
テーブル化・ピボットで代替すべきケース
DCOUNTは強力ですが、分析の目的によっては別手段のほうが自然なケースもあります。
切り口を変えながら集計したい(担当別、地域別、月別など)
ピボットテーブルが適します
データ整形(列分割、正規化、重複排除など)を先にしたい
Power Queryが適します
大量データを高速に分析したい
データモデル(Power Pivot)や別基盤の検討余地があります
「セル1つに条件付き件数が欲しい」のがDCOUNTの得意領域です。一方で、分析の切り替えや多軸集計が中心なら、ピボットやPower Queryのほうが効率的なことが多いです。道具を目的で選ぶのが最終的な成果につながります。
よくある質問
DCOUNTとDCOUNTAの違いは?
DCOUNT:条件に合うレコードのうち、指定フィールドが「数値」のセル数を数える
DCOUNTA:条件に合うレコードのうち、指定フィールドが「空白でない」セル数を数える(文字列も対象)
「売上が入力されている件数(数値だけ)」ならDCOUNTが向きます。
「備考が入力されている件数(文字も含む)」ならDCOUNTAが向きます。
この違いを押さえると、DCOUNTの用途が明確になります。
フィールドを省略するとどうなる?
DCOUNTは、運用上はフィールドを明示するのが安全です。省略や曖昧な指定は、第三者が式を見たときに「何を数えているのか」が分かりづらく、後からメンテナンスで事故が起こりやすくなります。
特にDCOUNTは「行数ではなく、指定列の数値セル数」を数えるため、フィールド指定が曖昧だと結果の意味が変わってしまいます。原則として、列名指定か列番号指定で明確にしてください。
AccessのDCountとは別物?
別物です。ExcelのDCOUNTは「表+条件範囲」という構造で集計しますが、AccessのDCountは「ドメイン(テーブルやクエリ)+条件式」という形で使われることが一般的です。用途も、Accessではフォームやレポートに件数を表示するなど、アプリケーション側のUI表示と結びつく場面が多くなります。
検索で混ざりやすいので、「今使っているのがExcelかAccessか」をまず確認すると迷いが減ります。
同名のdcount()を見かけたが何?
データ分析やログ分析の世界では、dcount()という同名の関数が出てくることがあります。例えばクエリ言語の文脈では、ユニーク数(カーディナリティ)を求める目的で使われることがあり、ExcelのDCOUNTとは意味も仕様も異なります。
「Excelの関数を調べたはずなのに、別の技術記事に辿り着いた」という場合は、同名ゆえの検索混同が原因です。ExcelのDCOUNTは、見出し行付きの表に対して、条件範囲で絞り込む“データベース関数”として理解してください。
まとめ
DCOUNT関数は、条件を満たすレコードのうち、指定列に数値が入っているセルの件数を数える関数です。最大のつまずきポイントは「条件範囲」ですが、次の要点を押さえれば、再現性高く運用できます。
データベース範囲は見出し行を含める
条件範囲は「見出し+条件」の2行以上で作り、見出しは完全一致させる
ANDは同じ行、ORは別の行で表現する
数字に見えても文字列なら数えないため、データ型を確認する
条件が増減しやすい運用、OR条件が多い運用ではDCOUNTが強い
次に取るべき行動としては、まず「条件範囲テンプレ」を作り、条件の変更をセル操作に寄せることをおすすめします。式の修正頻度が下がり、ミスや引き継ぎコストが目に見えて減っていきます。
なお、Excel/Access/別基盤で同名の関数が存在するため、検索時は「どの製品・どの文脈のDCOUNTか」を確認してください。仕様や目的が異なるものを混ぜてしまうと、理解が遠回りになりやすいためです。