Access。ランキングを算出したい!ExcelではRANK.EQ関数。Accessではどうするの?
<ランキング:DCount関数>
Excelでは、簡単にできるけど、Accessでは、どうやったらできるの?というものが結構ありまして、
今回ご紹介する、『順位』なども、そのうちの一つだといえます。
「順位」は、データを様々な角度から見る中で、
比較的簡単に算出して、わかりやすい項目なので、
よく資料などでも見かけることがありますが、
この「順位」が、Accessでは、少しわかりにくいのです。
まずは、次のようなテーブルがあります。
この金額に基づいて、順位をつけたいとします。
Accessはデータベースソフトということもあって、
昇順や降順などに並び替えることはクエリを使って簡単に、
並び替えることができます。
では、この金額に基づいた順位を算出したい場合は、
どうやったらいいのでしょうか?
Excelでは、RANK.EQ関数があるので、
簡単に順位を算出することが出来るのですが、
Accessには、RANK.EQ関数のような順位を算出するものがありません。
では、残念ながらできませんというわけにはいきませんので、
違った方法を考えることにしましょう。
例えば、内藤さんの金額は、178180。
この178180よりも大きい数値がいくつあるのかがわかれば、いいわけですね。
仮にこの178180よりも大きな数値がなければ、
おのずと1位ということになります。
そこで、今回登場するのは、DCount関数。
DCount関数を使うと順位を算出することが出来ます。
では、DCount関数の引数を確認しておきましょう。
DCount ( expr , domain [, criteria] )
これでは、わかりにくいので、説明を加えてみると、
演算フィールド名:Dcount(数えるもとのフィールド名,テーブルかクエリ名,条件)
という形です。
順位という演算フィールドを作っていきましょう。
順位: DCount("金額","T売上順位","金額>" & [金額])
実行してみましょう。
内藤さんの順位が0と表示されてしまっていますね。
順位: DCount("金額","T売上順位","金額>" & [金額]) だけでは、
1位のデータより大きい件数を数えるわけなので、当然該当がいないわけですから、
0と算出されてしまったわけです。
なので、このDcount関数の結果に+1してあげる必要があります。
それでは、次のようにDcount関数を修正しましょう。
順位: DCount("金額","T売上順位","金額>" & [金額])+1
そして、並び替えも合わせて行ってしまいましょう。
昇順にして、結果を確認してみましょう。
順位を算出することが出来ましたね。
Excelでは、RANK.EQ関数ですが、Accessでは、DCount関数を使うことで、
『順位』を算出することが出来ますので、使ってみましょう。