ヘルプの森~Excel・Access・Office全般ヘルプデスクサイト

No.004

条件に一致するレコードの件数を求める(ExcelならCOUNTIF関数のような) 《Dcount》

2003/2007/2010/2013/2016

ExcelのCOUNTIF関数のような条件のある件数を求める場合、AccessではDcount関数を使用します。
Accessでは条件付きの集計を行う場合に、いくつかのD~関数という種類が用意されています。Excelで同名の関数がありますが、使用方法はまったく違います。
AccessのDcount関数は簡単に書く場合、次のような書式となります。

  Dcount("対象フィールド", "テーブル/クエリ", "条件")

はじめ少し難しく感じるのが条件の書き方についてで、条件は文字列式となりますが、条件が文字列の場合と数値の場合とで区別して書く必要があります。
そのほか、部分一致条件であったり条件にオブジェクトを指定したり、以下さまざまなケースでご案内いたします。

<条件が数値>

テーブル[テーブル1]の[F1]フィールドで「100」のデータが何件あるかを調べます。
  Dcount("F1", "テーブル1", "F1=100")

Dcount関数の場合、特定のフィールドで合計などの集計をするわけではないので、1つ目の引数を「*」で指定しても構いません。
  Dcount("*", "テーブル1" ,"F1=100")

複合条件の場合は条件の指定で「And」または「Or」を使用します。
テーブル[テーブル1]の[F1]フィールドが「100」かつ[F3]フィールドが「120」未満のデータが何件あるかを調べます。
  Dcount("F1", "テーブル1", "F1=100 And F3<120")

条件が数値である場合は、上記のように、条件をそのままダブルクォーテーションで囲って指定します。

<条件が文字列(完全一致条件)>

まずは、文字列で完全一致の条件の場合です。

テーブル[テーブル1]の[F2]フィールドで「あ」のデータが何件あるかを調べます。
  Dcount("F2", "テーブル1", "F2 ='あ'")

テーブル[テーブル1]の[F2]フィールドで「あ」または「い」のデータが何件あるかを調べます。
  Dcount("F2", "テーブル1", "F2 ='あ' Or F2 ='い'")

条件の引数が文字列である中での文字列指定ということで、条件はダブルクォーテーションで囲みますが、その中の文字列をシングルクォーテーションで囲みます。

<条件が文字列(部分一致条件)>

では、文字列の部分一致の条件であるケースです。

テーブル[テーブル1]の[F2]フィールドで「あ」を含むデータが何件あるかを調べます。
部分一致条件でワイルドカードを使用する場合、Like演算子を使用して次のように設定します。
  Dcount("F2", "テーブル1", "F2 Like '*あ*'")

<条件がオブジェクトの値(数値)>

テキスト ボックスなどの値を条件とするようなケースです。
頻度として高いのですが、このときも、オブジェクトの値が数値か文字列かで書き方に違いがありますので、ご注意ください。

テーブル[テーブル1]の[F1]フィールドでテキスト ボックス[テキスト1]の値(数値)と等しいデータが何件あるかを調べます。
  Dcount("F1", "テーブル1", "F1=[テキスト1]")

<条件がオブジェクトの値(文字列)>

このケースは、アンパサンド(&)を使用して、条件となるオブジェクトとクォーテーションをつなげます。

テーブル[テーブル1]の[F2]フィールドでコンボ ボックス[コンボ2]の値(文字列)と等しいデータが何件あるかを調べます。
  Dcount("F2", "テーブル1", "F2='" & [コンボ2] & "'")

テーブル[テーブル1]の[F2]フィールドでコンボ ボックス[コンボ2]の値(文字列)を含むデータが何件あるかを調べます。
  Dcount("F2", "テーブル1", "F2 Like '*" & [コンボ2] & "*'")

さまざまなケースでご案内しました。
Dount関数は基になるレコード ソースにはない、別のテーブル/クエリのフィールドのレコード数をフォームやレポートに表示することができ、大変便利に利用できます。

ヘルプmemo

<Dcount関数>

条件(criteria)を満たすデータが、テーブルまたはクエリ(domain)のフィールド(expr)に何件あるかを検索します。
 構文: Dcount(expr , domain [, criteria ])
 引数:
  expr …対象となるデータが含まれているフィールドを表す式を指定
  domain …定義域を構成するレコードを指定する文字列式で指定
  criteria …演算対象となるデータの範囲を指定する文字列式を指定[省略可]
 ヒント:
  引数[domain]には、テーブル名またはパラメータを必要としないクエリのクエリ名を
      指定できます。
  引数[criteria]を省略し、引数[expr]を「*」とするとレコード数を返します。
  引数[criteria]を省略し、引数[expr]にフィールドを指定したとき、Null値のレコード
      は数えません。

Microsoftのサポート ページ「DCount 関数」もご参照ください。

twitter hatena line pocket

関連ヘルプ

2つの日付の期間を求める 《DateDiff》
数値の先頭に0を付け桁を揃えて表示する(ExcelならTEXT関数のような) 《Format》
特定の文字より左部分にある文字列を取り出す 《Left・InStr》
文字列を半角または全角にする(ExcelのASC/JIS関数のような) 《StrConv》
DCount、DLookUpなど定義域集合関数について
特定の文字より右部分にある文字列を取り出す 《Right・Instr・Len》