11/27/2020

Access。ExcelのCOUNTIF関数やCOUNTIFS関数のように条件付きで数えるには?【Conditional number】

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だと思います。