ExcelのDCOUNTA関数の使い方|条件付きで空白以外のセルを数える

スポンサーリンク

Excelで「営業部のメンバーのうち、備考欄に何か入力されている人は何人?」と調べたくなることはありませんか?

データが多いと、フィルターをかけて目視で数えるのは手間がかかりますよね。条件を変えるたびにやり直すのも面倒です。

そんなときに便利なのがExcelの DCOUNTA関数 です。条件に一致するレコードの中から、空白でないセルの個数を自動で数えてくれますよ。

この記事では、DCOUNTA関数の基本的な書き方から応用例まで解説します。よくあるエラーの対処法や、DCOUNT関数との違いもあわせて紹介しますね。

ExcelのDCOUNTA関数とは?

DCOUNTA関数は「ディーカウントエー」と読みます。Database COUNT A の略で、データベース形式の表から条件に一致するレコードの「空白でないセルの個数」を求める関数です。

Excelにはデータベース関数と呼ばれるグループがあります。DCOUNTA関数はそのひとつで、DCOUNT関数(条件付き数値カウント)やDAVERAGE関数(条件付き平均)と同じ仲間です。

ポイントは「空白以外」をカウントするところです。数値だけでなく、文字列・日付・エラー値など、セルに何か入っていればすべてカウント対象になります。

DCOUNTA関数はExcel 2003以降のすべてのバージョンで使えます。Googleスプレッドシートでも同じ書き方で使えるので、覚えておくと活用の幅が広がりますよ。

ExcelのDCOUNTA関数の書き方(構文と引数)

基本構文

=DCOUNTA(データベース, フィールド, 検索条件)

引数は3つあり、すべて必須です。

引数の説明

引数必須/省略可説明
データベース必須見出し行を含むセル範囲(例: A1:D10)
フィールド必須カウントしたい列の見出し名(”備考”)または列番号(1始まり)
検索条件必須見出し行+条件値を含むセル範囲

データベース には、表全体を見出し行ごと指定します。見出し行がないと正しく動作しないので注意してください。

フィールド には、空白以外のセルを数えたい列を指定します。指定方法は2通りあります。

指定方法書き方の例説明
列の見出し名をダブルクォーテーションで囲む“備考”見出しが「備考」の列を対象にする
列番号を数値で指定する4左端から4番目の列を対象にする

見出し名で指定するほうが数式の意味がわかりやすいので、基本的にはこちらがおすすめですよ。

検索条件 には、見出し行と条件値がセットになったセル範囲を指定します。条件範囲はデータベースの範囲と重ならない場所に作ってください。重なっていると正しい結果が返りません。

DCOUNTA関数の基本的な使い方

ここでは、社員データから特定の部署でコメントが入力されている人数を数える例で解説します。

サンプルデータ

以下のような社員リストがA1:D7に入っているとします。

名前部署売上備考
田中営業部450リーダー
佐藤総務部 新人研修中
鈴木営業部620 
高橋開発部300プロジェクトA
伊藤営業部380MVP候補
渡辺総務部  

条件の設定

F1:F2に条件を入力します。

F1F2
部署営業部

F1にはデータベースの見出しと同じ文字列を入力します。F2には抽出条件の値を入力します。

数式の入力

営業部で備考欄が空白でない人数を求める数式は次のとおりです。

=DCOUNTA(A1:D7, "備考", F1:F2)

この数式は「A1:D7のデータベースから、部署が営業部のレコードを探して、備考の列が空白でないセルの個数を返す」という意味です。

営業部のメンバーは田中(備考: リーダー)、鈴木(備考: 空白)、伊藤(備考: MVP候補)の3人です。このうち備考が空白でないのは田中と伊藤の2人なので、結果は 2 になります。

条件を「総務部」に変えたいときは、F2のセルを書き換えるだけでOKです。数式を修正する必要はありませんよ。

DCOUNTA関数の応用:複数条件やOR条件でカウントする

AND条件(すべての条件を同時に満たす)

複数の条件をすべて満たすレコードの中から空白以外のセルを数えるには、条件を 同じ行 に並べます。

たとえば「営業部」かつ「売上が400以上」のレコードで備考が入力されている件数を求めるには、条件範囲を次のように設定します。

F1G1
部署売上
営業部>=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関数でよくあるエラーと対処法

#VALUE! エラー

フィールド名が間違っている場合に発生します。

  • 原因: フィールドに指定した見出し名がデータベースの見出し行に存在しない
  • 対処法: ダブルクォーテーションの中の文字列が、見出し行と完全に一致しているか確認してください。スペースの有無や全角半角の違いにも注意しましょう

フィールドを列番号で指定しているときは、番号が列数の範囲内に収まっているかも確認してみてください。

結果が0になる

条件に一致するレコードはあるのに結果が0になる場合があります。

  • 原因: 対象列のセルがすべて空白になっている、または条件の値にスペースや改行が含まれている
  • 対処法: 対象列にデータが入っているか確認してください。条件セルの前後に不要な空白がないかもチェックしましょう

見た目では空白に見えても、スペースが入っていると「空白以外」としてカウントされることがあります。TRIM関数(前後の余分なスペースを除去する関数)で整理してから数えると正確ですよ。

#NAME? エラー

数式の入力ミスで発生します。

  • 原因: 関数名のスペルミス、またはフィールド名のダブルクォーテーション忘れ
  • 対処法: 「DCOUNTA」のスペルを確認してください。フィールド名を文字列で指定する場合は "備考" のようにダブルクォーテーションで囲む必要があります

DCOUNTA関数と似た関数の違い・使い分け

DCOUNTA関数とDCOUNT関数の違い

同じデータベース関数で名前も似ていますが、カウント対象が異なります。

比較項目DCOUNTA関数DCOUNT関数
カウント対象空白以外のセル(文字列・数値・日付・エラー値すべて)数値が入ったセルのみ
文字列セルカウントするカウントしない
空白セルカウントしないカウントしない

たとえば先ほどのサンプルデータで、営業部の「備考」列をカウントする場合を比べてみましょう。

  • =DCOUNTA(A1:D7, "備考", F1:F2)2(文字列が入っている田中・伊藤をカウント)
  • =DCOUNT(A1:D7, "備考", F1:F2)0(数値が入っていないため0)

「文字列も含めて空白以外を数えたい」ならDCOUNTA関数、「数値だけを数えたい」ならDCOUNT関数を選んでください。

DCOUNTA関数とCOUNTA関数・COUNTIF関数の違い

条件なしで空白以外をカウントするならCOUNTA関数、条件付きでカウントするならCOUNTIF関数も選択肢になります。

比較項目DCOUNTA関数COUNTA関数COUNTIF関数
条件指定セル範囲で指定(条件表を作る)条件なし数式の中に直接書く
複数条件AND/OR条件を行の並びで表現不可COUNTIFS関数を使う
条件の変更セルの値を書き換えるだけ数式を編集する必要がある
向いている場面条件を頻繁に変える分析単純な非空白カウント条件が固定の集計

DCOUNTA関数が向いているケース:

  • 条件をユーザーが自由に切り替えたいとき
  • AND条件とOR条件を組み合わせた複雑な抽出をしたいとき
  • データベース関数ファミリー(DAVERAGEDGETDPRODUCTなど)と一緒に使うとき

COUNTIF関数が向いているケース:

  • 条件がシンプルで固定されているとき
  • 条件表を別に作りたくないとき

まとめ

この記事では、ExcelのDCOUNTA関数の使い方を解説しました。

  • DCOUNTA関数は、データベース形式の表から条件に一致するレコードの「空白以外のセル」を数える関数
  • 引数は「データベース」「フィールド」「検索条件」の3つで、すべて必須
  • 数値だけでなく文字列や日付もカウント対象になる(DCOUNT関数との違い)
  • AND条件は同じ行、OR条件は別の行に条件を書く
  • 条件をセルで管理するので、値を変えるだけで集計対象を切り替えられる

データベース関数は条件をセル上で管理できるのが最大のメリットです。フィルターをかけて手動で数える作業から卒業して、DCOUNTA関数で効率的にデータ管理をしてみてくださいね。

タイトルとURLをコピーしました