5/02/2018

Access。ランキングを算出したい!ExcelではRANK.EQ関数。Accessではどうするの?【DCount】

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関数を使うことで、
『順位』を算出することが出来ますので、使ってみましょう。