Access。アンケート集計。年代別に区分けするのにどうしたらいいの?
<Access:Partition関数>
次のようなテーブルがあります。参加者の一覧データなのですが、
参加された方々の年代別の集計がしたいのですが、
Accessではどのようにしたらいいのでしょうか?
クエリで集計をしても、年齢ですから全く意味がありませんし、
テーブルに一つフィールドを追加するわけにもいきません。
Excelだったら、年齢の隣に、年代という列を作って、
ROUNDDOWN関数を使って、一の位を0にするようにした結果を、
COUNTIF関数を使ってあげれば、年代を算出することは容易なのですが、
Accessではそのように算出することもできません。
しかし、Accessには、この問題を解決する為のとっておきの関数があります。
それが、【Partition関数】。
ちなみに、Partition関数の引数を確認しておくと、
Partition( number, start, stop, interval)
となっております。
numberのところがフィールド名になるわけですね。
startは、数値の範囲の最小値が入ります。
今回は、年齢なので1~100としておきますので、1ということになります。
なお、負の数はNG
stopは、数値の範囲の最高値が入りますので、
今回は上限100歳までとしますので、100ということになります。
当然ですが、startの数値よりも小さい値はNGですね。
intervalは、どのように区分するのかということなので、
年代別なので、10ずつに区分けしたいので、10ということになります。
では、実際に行ってみましょう。
作成タブのクエリデザインを使ってQ年代別クエリを作成していきます。
使うテーブルは、T参加者。
年代別という演算フィールドだけでOKなのですが、わかりやすいように、
T参加者のフィールドとPartition関数を使った演算フィールドという構成で
作っていきます。
演算フィールドは、
年代別: Partition([年齢],1,100,10)
フィールド名は、「年代別」
Partition関数は、先ほど説明したように、引数を設定しておきましょう。
実行してみるとこのようになっていますね。
年代別が、71:80とか41:50というように算出されていますね。
年齢が72なので、71:80。
つまり71~80に該当しているということを算出しております。
このように、数値を区分して振り分けてくれる関数が、Partition関数なのです。
Excelにはない関数ですね。
あとは、この年代別というフィールドの件数を
カウントする集計をしてあげればいいわけですね。
では、Q年代別を使って、新しくQ年代別人数というクエリを作ります。
Q年代別クエリから、年代別と新しく年代別件数というフィールドを用意します。
集計行を追加して、年代別フィールドは、グループ化。
年代別件数は、年代別をカウントするように設定したら実行してみましょう。
このように、年代別の参加人数を算出することが出来ましたね。
Excelは、ROUNDDOWN+COUNTIF関数ですが、
Accessでは、Partition関数で算出することが出来ますよ。