Excelで「営業部のメンバーのうち、備考欄に何か入力されている人は何人?」と調べたくなることはありませんか?
データが多いと、フィルターをかけて目視で数えるのは手間がかかりますよね。条件を変えるたびにやり直すのも面倒です。
そんなときに便利なのがExcelの DCOUNTA関数 です。条件に一致するレコードの中から、空白でないセルの個数を自動で数えてくれますよ。
この記事では、DCOUNTA関数の基本的な書き方から応用例まで解説します。AND/OR条件の書き分け、ワイルドカード、よくあるエラーの対処法、DCOUNT関数やDAVERAGE関数、COUNTIFS関数との使い分けもあわせて紹介しますね。
ExcelのDCOUNTA関数とは?
DCOUNTA関数は「ディーカウントエー」と読みます。関数名は「Database COUNT A」の略で、Aは「All values(すべての値)」を表します。データベース形式の表から条件に一致するレコードを抽出し、その中で「空白でないセル」の個数を返す関数です。
Excelには、頭文字に「D」がつくデータベース関数と呼ばれる12種類の関数グループがあります。DCOUNTA関数はそのひとつで、DCOUNT関数(条件付きの数値カウント)やDAVERAGE関数(条件付き平均)と同じ仲間です。
ポイントは「空白以外」をカウントすることです。数値だけでなく、文字列・日付・論理値・エラー値など、セルに何か入っていればすべてカウント対象になります。
DCOUNTA関数はExcel 2003以降のすべてのバージョンで使えます。Microsoft 365・Excel 2024・Excel for Mac・Web版Excelすべてで利用できますし、Googleスプレッドシートでも同じ書き方で動作するので、覚えておくと活用の幅が広がりますよ。
ExcelのDCOUNTA関数の書き方(構文と引数)
基本構文
=DCOUNTA(データベース, フィールド, 検索条件)
引数は3つあり、すべて必須です。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| データベース | 必須 | 見出し行を含むセル範囲(例: A1:D10) |
| フィールド | 必須 | カウントしたい列の見出し名(”備考”)または列番号(1始まり) |
| 検索条件 | 必須 | 見出し行+条件値を含むセル範囲 |
データベース には、表全体を見出し行ごと指定します。見出し行がないと正しく動作しないので注意してください。
フィールド には、空白以外のセルを数えたい列を指定します。指定方法は2通りあります。
| 指定方法 | 書き方の例 | 説明 |
|---|---|---|
| 列の見出し名をダブルクォーテーションで囲む | “備考” | 見出しが「備考」の列を対象にする |
| 列番号を数値で指定する | 4 | 左端から4番目の列を対象にする |
見出し名で指定するほうが数式の意味がわかりやすいので、基本的にはこちらがおすすめです。列番号での指定は、見出しが空欄のときや列構成が固定の表で簡潔に書きたいときに便利ですよ。
検索条件 には、見出し行と条件値がセットになったセル範囲を指定します。条件範囲はデータベースの範囲と重ならない場所に作ってください。重なっていると正しい結果が返りません。
DCOUNTA関数の基本的な使い方
ここでは、社員データから特定の部署でコメントが入力されている人数を数える例で解説します。
サンプルデータ
以下のような社員リストがA1:D7に入っているとします。
| 名前 | 部署 | 売上 | 備考 |
|---|---|---|---|
| 田中 | 営業部 | 450 | リーダー |
| 佐藤 | 総務部 | 新人研修中 | |
| 鈴木 | 営業部 | 620 | |
| 高橋 | 開発部 | 300 | プロジェクトA |
| 伊藤 | 営業部 | 380 | MVP候補 |
| 渡辺 | 総務部 |
条件の設定
F1:F2に条件を入力します。
| F1 | F2 |
|---|---|
| 部署 | 営業部 |
F1にはデータベースの見出しと同じ文字列を入力します。F2には抽出条件の値を入力します。
数式の入力
営業部で備考欄が空白でない人数を求める数式は次のとおりです。
=DCOUNTA(A1:D7, "備考", F1:F2)
この数式は「A1:D7のデータベースから、部署が営業部のレコードを探して、備考の列が空白でないセルの個数を返す」という意味です。
営業部のメンバーは田中(備考: リーダー)、鈴木(備考: 空白)、伊藤(備考: MVP候補)の3人です。このうち備考が空白でないのは田中と伊藤の2人なので、結果は 2 になります。
条件を「総務部」に変えたいときは、F2のセルを書き換えるだけでOKです。数式を修正する必要はありません。条件をセルで管理できることがDCOUNTA関数の最大のメリットです。
列番号で指定する書き方
フィールドを列番号で指定する場合は、次のように書きます。
=DCOUNTA(A1:D7, 4, F1:F2)
「4」は左端から4列目(=備考列)を表します。結果は見出し名で指定した場合と同じく 2 です。
ただし列番号は表のレイアウトを変えると数式の修正が必要になります。列の追加・削除を頻繁にするなら、見出し名指定のほうが安全ですよ。
DCOUNTA関数の応用:複数条件やOR条件でカウントする
AND条件(すべての条件を同時に満たす)
複数の条件をすべて満たすレコードの中から空白以外のセルを数えるには、条件を 同じ行 に並べます。
たとえば「営業部」かつ「売上が400以上」のレコードで備考が入力されている件数を求めるには、条件範囲を次のように設定します。
| F1 | G1 |
|---|---|
| 部署 | 売上 |
| 営業部 | >=400 |
=DCOUNTA(A1:D7, "備考", F1:G2)
営業部かつ売上400以上は田中(450・備考あり)と鈴木(620・備考なし)の2人です。備考が空白でないのは田中だけなので、結果は 1 になります。
OR条件(いずれかの条件を満たす)
いずれかの条件を満たすレコードで空白以外のセルを数えるには、条件を 別の行 に書きます。
たとえば「営業部」または「開発部」で備考が入力されている人数を求めるには、条件範囲を次のように設定します。
| F1 |
|---|
| 部署 |
| 営業部 |
| 開発部 |
=DCOUNTA(A1:D7, "備考", F1:F3)
営業部(田中・鈴木・伊藤)と開発部(高橋)の4人のうち、備考が空白でないのは田中、高橋、伊藤の3人です。結果は 3 になります。
AND条件とOR条件の使い分けがデータベース関数のポイントです。「同じ行に書けばAND、別の行に書けばOR」と覚えておけば迷いませんよ。
ワイルドカードで部分一致をカウントする
DCOUNTA関数は条件にワイルドカード(* と ?)を使えます。「特定の文字を含む」レコードを集計したいときに便利です。
| ワイルドカード | 意味 | 例 |
|---|---|---|
* | 任意の0文字以上の文字列 | 営業* → 「営業部」「営業企画」などにマッチ |
? | 任意の1文字 | 田? → 「田中」「田村」など2文字目が任意 |
たとえば「備考に『リーダー』を含む」レコードを数えたい場合の条件範囲はこうなります。
| F1 |
|---|
| 備考 |
| リーダー |
=DCOUNTA(A1:D7, "備考", F1:F2)
備考列に「リーダー」を含むレコードを抽出してカウントします。* を前後につけると「含む」、後ろだけにつけると「で始まる」、前だけにつけると「で終わる」という指定になりますよ。
比較演算子で範囲条件を書く
数値や日付の条件は、比較演算子を使って範囲指定できます。
| 演算子 | 意味 | 例 |
|---|---|---|
>= | 以上 | >=400 |
<= | 以下 | <=600 |
> | より大きい | >500 |
< | より小さい | <300 |
<> | 等しくない | <>営業部 |
「売上が400以上600以下」のような範囲条件は、同じ見出しを2列並べてAND条件で表現します。
| F1 | G1 |
|---|---|
| 売上 | 売上 |
| >=400 | <=600 |
このような条件表を組み合わせることで、フィルターの代わりとして柔軟な集計ができますよ。
DCOUNTA関数でよくあるエラーと対処法
#VALUE! エラー
フィールド名が間違っている場合や、データベース範囲の指定がおかしい場合に発生します。
- 原因1: フィールドに指定した見出し名がデータベースの見出し行に存在しない
- 原因2: フィールドの列番号がデータベースの列数を超えている
- 対処法: ダブルクォーテーションの中の文字列が、見出し行と完全に一致しているか確認してください。スペースの有無や全角半角の違いにも注意しましょう。列番号で指定する場合は、データベース範囲の列数以内に収まっているか確認します
結果が0になる
条件に一致するレコードはあるのに結果が0になる場合があります。
- 原因1: 対象列のセルがすべて空白になっている
- 原因2: 条件範囲の見出しがデータベースの見出しと一致していない(見出しの文字列ミス)
- 原因3: 条件値の前後に余分なスペースが入っている
- 対処法: 対象列にデータが入っているか確認してください。条件範囲のF1セルとデータベースの見出し(B1など)が完全一致しているか見比べましょう。条件セルの前後に空白がないかは、TRIM関数で整理してから貼り付けると安全です
見た目では空白に見えても、半角スペースや改行コードが入っていると「空白以外」としてカウントされることがあります。Ctrl+H(置換)でスペースを取り除いてからカウントすると正確ですよ。
#NAME? エラー
数式の入力ミスで発生します。
- 原因: 関数名のスペルミス、またはフィールド名のダブルクォーテーション忘れ
- 対処法: 「DCOUNTA」のスペルを確認してください。フィールド名を文字列で指定する場合は
"備考"のようにダブルクォーテーションで囲む必要があります
期待した値より多くカウントされる
条件に一致しないはずのレコードまでカウントされてしまうケースもあります。
- 原因1: 条件範囲が1行(見出し行のみ)になっており、すべての行がヒットしている
- 原因2: 条件値が空欄になっている(空欄=条件なしと判定される)
- 対処法: 条件範囲は必ず「見出し行+条件値の行」をセットで指定してください。条件値のセルが空のときも条件なしと解釈されるので注意しましょう
DCOUNTA関数と似た関数の違い・使い分け
DCOUNTA関数とDCOUNT関数の違い
同じデータベース関数で名前も似ていますが、カウント対象が異なります。
| 比較項目 | DCOUNTA関数 | DCOUNT関数 |
|---|---|---|
| カウント対象 | 空白以外のセル(文字列・数値・日付・論理値・エラー値すべて) | 数値が入ったセルのみ |
| 文字列セル | カウントする | カウントしない |
| 日付セル | カウントする(シリアル値も対象) | カウントする(シリアル値は数値扱い) |
| 空白セル | カウントしない | カウントしない |
たとえば先ほどのサンプルデータで、営業部の「備考」列をカウントする場合を比べてみましょう。
=DCOUNTA(A1:D7, "備考", F1:F2)→ 2(文字列が入っている田中・伊藤をカウント)=DCOUNT(A1:D7, "備考", F1:F2)→ 0(数値が入っていないため0)
「文字列も含めて空白以外を数えたい」ならDCOUNTA関数、「数値だけを数えたい」ならDCOUNT関数を選んでください。
DCOUNTA関数とCOUNTA関数・COUNTIFS関数の違い
条件なしで空白以外をカウントするならCOUNTA関数、条件付きでカウントするならCOUNTIF関数やCOUNTIFS関数も選択肢になります。
| 比較項目 | DCOUNTA関数 | COUNTA関数 | COUNTIFS関数 |
|---|---|---|---|
| 条件指定 | セル範囲で指定(条件表を作る) | 条件なし | 数式の中に直接書く |
| 複数条件(AND) | 行で表現 | 不可 | 引数を増やすだけ |
| 複数条件(OR) | 行を分けて表現可能 | 不可 | 不可(SUMで足し合わせる必要あり) |
| ワイルドカード | 標準で対応 | 不可 | 対応 |
| 条件の変更 | セルの値を書き換えるだけ | -- | 数式を編集する必要がある |
| 向いている場面 | 条件を頻繁に変える分析、複雑なOR条件 | 単純な非空白カウント | 条件が固定の集計、AND条件のみ |
DCOUNTA関数が向いているケース:
- 条件をユーザーが自由に切り替えたいとき(ダッシュボード形式の集計表など)
- AND条件とOR条件を組み合わせた複雑な抽出をしたいとき
- データベース関数ファミリー(DAVERAGE・DGET・DPRODUCTなど)と一緒に使うとき
COUNTIFS関数が向いているケース:
- 条件がシンプルで固定されているとき
- AND条件のみで足りるとき
- 条件表を別に作るのが手間に感じるとき
実務では、頻繁に条件を切り替えながら分析するときはDCOUNTA関数、単発の集計やレポート作成にはCOUNTIFS関数、と用途で使い分けると効率的ですよ。
DCOUNTA関数を業務で使うときの実践Tips
条件範囲はテンプレ化しておくと再利用しやすい
条件範囲を毎回作り直すのは面倒なので、シートの右側や別シートに「条件入力エリア」をテンプレ化しておくと便利です。データ範囲を構造化参照(テーブル)にしておけば、行が増えてもデータベース引数を毎回直す必要がありません。
データベース範囲は名前定義しておくと安全
データベース引数を =DCOUNTA(社員リスト, "備考", F1:F2) のように 名前定義 で書いておくと、表が増減してもメンテナンスがラクです。「数式」タブの「名前の管理」から登録できますよ。
集計結果をダッシュボードに並べる
DCOUNTA関数は条件をセルで管理できるので、「部署別の備考入力件数」「月別の対応件数」などをダッシュボード化するのに向いています。条件セルをドロップダウンリスト(データの入力規則)にすれば、ノーコードで切り替え可能なレポートが作れますよ。
まとめ
この記事では、ExcelのDCOUNTA関数の使い方を解説しました。
- DCOUNTA関数は、データベース形式の表から条件に一致するレコードの「空白以外のセル」を数える関数
- 引数は「データベース」「フィールド」「検索条件」の3つで、すべて必須
- 数値だけでなく文字列・日付・論理値もカウント対象になる(DCOUNT関数との違い)
- AND条件は同じ行、OR条件は別の行に条件を書く
- ワイルドカード(
*?)や比較演算子(>=<=)で柔軟な条件指定ができる - 条件をセルで管理するので、値を変えるだけで集計対象を切り替えられる
データベース関数は条件をセル上で管理できるのが最大のメリットです。フィルターをかけて手動で数える作業から卒業して、DCOUNTA関数で効率的にデータ集計をしてみてくださいね。
関連記事として、数値のみをカウントするDCOUNT関数の使い方、平均を求めるDAVERAGE関数の使い方、合計を求めるDSUM関数の使い方もあわせてどうぞ。
