Access。ExcelのCOUNTIF関数やCOUNTIFS関数のように条件付きで数えるには?
<Access:Dcount関数>
Excelだと、都道府県のフィールドで、神奈川県の人が何人いるのか知りたい場合は、COUNTIF関数をつかって算出させることができますが、Accessではどのようにしたらいいのでしょうか?
例えば、次テーブル。
問01フィールドで、「○」のデータは何件あるのか知りたい場合、Excelでは、COUNTIF関数を使えば、比較的簡単に算出することができます。
これを、Accessで集計したいわけです。
当然、Accessには、COUNTIF関数なんてものは、ありません。
Accessにある『数える』関数は、「Dcount関数」というのがあります。
この関数をクエリで使うことで、対応することができそうです。
では、早速クエリを作っていきましょう。
作成タブの「クエリデザイン」を使ってクエリを作成していきます。
フィールドに演算フィールドを設定します。
問01の○: DCount("問01","Tアンケート","問01='○'")
注意点があって、条件のところですが、「'○'」と条件が文字の場合「’(シングルコーテーション)」で挟んであげる必要があります。
まずは実行して確認してみましょう。
問01の○の件数は2件ありましたので、「2」と集計されていれば成功ですね。
データシートビューに切り替えましょう。
集計結果は「2」なんですが…3件表示されています?
集計はされたのですが、レコードが3件だったので、このように表示されてしまうので、修正します。
デザインビューにして、クエリツールの「デザイン」タブにある「集計」をクリックします。
集計行が表示されますので、「グループ化」します。
結果を確認しますので、データシートビューに切り替えましょう。
このように、集計することができました。
それでは、次のような「問01の回答結果が「○」で評価が80ポイント以上」という条件での集計はできるのでしょうか?
今回は、単一条件ではなくて、複数条件。
Excelだったら、COUNTIFS関数を使うところですが…
AccessのDcount関数は、
Dcount(対象フィールド名,テーブル名orクエリ名,抽出条件1)
という構造になっていて、引数に抽出条件を追加してあげるだけで、複数条件に対応することできますので、次のように演算フィールドを修正すれば、対応できます。
問01の○: DCount("問01","Tアンケート","問01='○' and 評価>=80")
と演算フィールドを修正しました。
それでは、実行して結果を確認してみましょう。
確かに1件だけが該当していますので、きちんと集計できているようです。
このように、抽出条件で「and」をつかうことで、複数条件に対応することができました。
元も子もない話ではありますが、Dcount関数がわからない時は、ExcelにエクスポートしてExcel上で、COUNTIF関数やCOUNTIFS関数をつかうほうが、わかりやすいようでしたら、それでもOKだと思います。