5/25/2019

Access。出欠席を確認したいけど、AccessでCOUNTIF関数ってあるの?

Access。出欠席を確認したいけど、AccessでCOUNTIF関数ってあるの?

<Access>

Excelと違って、Accessは、フィールドに対して縦方向に集計することができますが、複数のフィールドを跨いで、要するに、横方向のフィールドには、Sum関数などの集計する関数は使うことができません。

しかしながら、次のようなテーブルがあって、1回目~5回目までの出欠席の数を算出したい場合は、Excelファイルとしてエクスポートするしか方法はないのでしょうか?

Excelだったら、COUNTIF関数を使って、”○”の数を数えればあっという間に出席した数を求めることができますが、Accessには、COUNTIF関数は存在しません。

抽出と集計を使った縦方向しか求めることができないからです。

そこで、Accessで使えるものだけで、求めていこうと考えます。

『一つのフィールド』だったら光が見えてきそうですね。

まずは、1回目~5回目までの○と×を1つのフィールドに集めます。

作成タブの「クエリデザイン」を使って、テーブルのすべてのフィールドを使ってクエリを作成します。

そして、次の演算フィールドを追加します。

結合: [01回目] & [02回目] & [03回目] & [04回目] & [05回目]
「&(アンパサンド)」を使って、各フィールドの文字を結合させたフィールドを作ります。
実行してデータシートビューで確認してみましょう。

この演算フィールドの『結合』を使って、出席数を求めます。

デザインビューに戻って、次の演算フィールドを作ります。

出席数: Len(Replace([結合],"×",""))
これで、出席数を算出することができます。

まずは、実行して確認してみましょう。

このように、”○”の数を算出することができていますね。
それでは、演算フィールドの説明をしましょう。

Len(Replace([結合],"×",""))

引数のReplace([結合],"×","")から説明します。

Replace関数は、文字を置換することができる関数です。
そこで、欠席を意味する”×”を消してしまえば、出席を意味する”○”だけが残ります。
その残った”○”を数えればいいわけです。
Replace関数を使って、”×”を「””(空白)」に置換させる処理をしています。

“○”だけ残った文字数を数えさせているのが、Len関数です。Len関数は文字数を数えることができる関数です。

このように、Len+Replace関数というネストを使うことで、算出することができます。

逆に、Len(Replace([結合],"○",""))と、”×”を”○”に替えてあげるだけで、欠席数を算出することができます。

出席率: [出席数]/Len([結合])
という演算フィールドを作れば、出席数は算出済みですし、結合した文字数を数えてしまえば、総数を求めることができますので、簡単に、出席率も求めることができるわけですね。

なお、出席率のパーセント表示は、プロパティを使うことで表示することができます。

Accessでは、Excelのように、ボタン一つでパーセントスタイルを設定することができませんので、書式を「パーセント」に設定をして、小数点以下表示桁数を必要に応じて設定すれば、パーセントで表示することができますよ。

こちらも、合わせて知っておくと便利な機能ですね。