5/17/2018

Access。アンケート集計。年代別に区分けするのにどうしたらいいの?【Partition関数】

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関数で算出することが出来ますよ。