ACCESS DCount関数でレコード数を集計する方法

ACCESSのテーブルの中から、条件に合ったレコードの件数を計算したい時がありますよね。

こういった時に役に立つのがDCount関数です。
EXCELでも同じ関数がありますが、ACCESSでは構文が少し異なります。

レコード数をカウントする際に非常に便利なこのDcount関数の使い方を説明しましょう。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。

構文

Dcount関数は以下の構文で利用します。

DCount ( フィールド , テーブル , 抽出条件 )

引数は、レコード数を計算する対象のフィールド名、そのフィールドが含まれるテーブル名、レコードの抽出条件の3つです。

比較的わかりやすい関数ですね。

Dcount関数の利用例

今回はサンプルとして以下の売上情報が入力された「test_売上」テーブルを準備しました。

こちらのテーブルを元に、DCount関数で様々な値を集計します。

それでは、いくつかの例をご提示します。

1.レコードの総件数を調べる

単純にtest_売上テーブルのレコード件数を調べたい場合は以下のように記述します。

今回の場合、結果は5になります。

便宜的に売上ID(主キー)を集計対象フィールドにしていますが、レコード件数を調べたいだけであれば、全レコードに必ず値が入っているフィールドであればどのフィールドを指定しても構いません。ただ、主キーは必ず値が入っているフィールドですので全レコードの件数を調べたい場合には無難と言えます。

もしくは、

という記述方法でもレコードの総数を調べることができます。

2.特定のフィールドに値が入っている件数を調べる

仕入金額フィールドの件数を調べたい場合は以下のようになります。

1つ目の引数のフィールド名に「仕入金額」を指定しました。
今回のサンプルでは仕入金額に値が入っていないレコードが1つあるため、結果は4になります。

3.特定の条件に合致する件数を調べる

ここから少し実践的になります。
特定の条件に合致するレコードの件数を調べる場合として、売上金額が20,000円以上の件数を調べます。

1つ目の引数の集計対象フィールドは主キーである売上ID(これも件数が正しく測れればどのフィールドでも構いません)にしています。
3つ目の引数の抽出条件に売上金額 >= 20,000と設定しています。
今回の場合、結果は3になります。

4.テキストが部分一致する件数を調べる

上記は数値での抽出条件でしたが、テキストの部分一致の抽出条件でレコード件数を調べることも可能です。
例えば、顧客名に「ひこ」を含む件数を調べるのであれば以下のようになります。

今回の場合、結果は2になります。
ここでは、あいまい抽出をするために「Like」演算子を使用し、「*」を使うことで「ひこを含む」を指定しています。
また、「*」の前後に「’(シングルクオーテーション)」を入れていますが、こちらは文字列型を示す「”(ダブルクオーテーション)」の内側で更に文字列型を指定するために使用します。

このシングルクォーテーションの利用方法については以下の記事を参照ください。

シングルクォーテーションの使い方

フォームでの使用例

1.直接指定

実際にACCESSのフォームで使用する場合の例を見てみましょう。
フォームをデザインビューで作成します。

フォームのデザインビュー

フォームに、非連結のテキストボックスを配置しましょう。
ACCESSメニューからフォームデザインを選択し、テキストボックスを配置します。

配置したテキストボックスにDcount関数で集計したのレコード件数が表示されるように設定します。
作成したテキストボックスを選択し、プロパティシートの「データ」タブの「コントロールソース」にDcount関数を記述します。

フォームのプロパティを右側に表示していますが、コントロールソースには下記のように記載しています。

test_売上テーブルから顧客名に「ひこ」を含むレコードの売上ID数を集計する式です。

では、フォームビューで結果を見てみましょう。

このように、DCountの集計結果がフォームに表示されました。

2.条件指定

先ほどの例では、DCountの抽出条件を直接コントロースソースに記載しました。
“顧客名 like ‘*ひこ*'”の部分です。

しかし、これでは条件を変更したい時にいちいちコントロースソースを変更しなければいけないので面倒です。
そこで、同じフォームの別のコントロールを使って抽出条件を変更する設定をしてみましょう。

フォームのデザインビューで下記のように設定します。

今度は、入力用コントロール「入力」を追加しました。
そして、結果表示用コントロールのコントロールソースには以下のように記述します。

売上テーブルから、「入力」コントロールの値と一部が一致する「顧客名」を持つ売上IDの件数を集計するようにしています。

では結果を見てみましょう。

入力欄に「ひこ」と入力することで、結果欄に「2」が表示されました。
入力欄の値を変えると、

このように結果も連動して変えることができます。
こういうのを作れるようになるとACCESSの面白さが分かってきますよね。

DCount関数とCount関数の違い

ACCESSにはレコード数を計算する関数として、DCount関数ともうひとつ、Count関数があります。
基本的にはDCount関数の方が汎用性が高く使いやすいのですが、検索フォーム等でレコードの抽出結果に応じてレコード件数をリアルタイムに集計する際はCount関数の方が便利です。

詳しくは以下の記事に記載していますのでご参照ください。

Count関数とDcount関数の違い

以上、ACCESSのDCount関数でレコード数を集計する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス紹介

最後までお読みいただき、ありがとうございました。