Access。Excelで順位を求めるならRANK.EQ関数。Accessでは?
<DCount関数>
店舗別の販売金額の順位を求めたいのですが、Excelでは、RANK.EQ関数をつかうことで、対応することができます。
C2にRANK.EQ関数をつかった数式を設定します。
=RANK.EQ(B2,$B$2:$B$6,0)
RANK.EQ関数のポイントは、2つ目の引数である「参照」に絶対参照を設定しないと範囲がズレるので注意が必要です。
あと、同じ数字がある場合は、同順位にして、次の順位はその件数分を空けた数値になります。
ところでAccessで、順位を求めるにはどのようにしたらいいのでしょうか。
というのも、Accessには、RANK.EQ関数をはじめRANK系の関数が用意されていません。
Excelと同じデータのテーブルを用意しました。
クエリデザインで順位を求める演算フィールドをつくっていきましょう。
順位の演算フィールドは
順位: DCount("販売金額","T店舗別販売金額","販売金額>" & [販売金額])+1
まずは実行してみましょう。
先ほどのExcelと同じように順位を求めることができました。
では、演算フィールドを確認しておきましょう。
順位: DCount("販売金額","T店舗別販売金額","販売金額>" & [販売金額])+1
順位を求める関数はAccessにはないので、そもそも順位とは何なのかを考えてみます。
新宿店の販売金額より大きい販売金額の件数を求めればいいわけです。
全体で大きい値は ない ならば、0 と求められます。
0位というわけにはいきませんから+1する必要があります。
これを演算フィールドで表現すればいいわけです。
件数を求めるにはDCount関数をつかいます。
最初の引数は、フィールド。
今回は販売金額の順位を求めたいので、「”販売金額”」。
2つ目の引数は、テーブルまたはクエリ名なので、「"T店舗別販売金額"」
3つ目の引数は、条件。
「"販売金額>" & [販売金額]」
この条件がポイントでして、"販売金額>販売金額” としてしまうと、"販売金額>販売金額”という文字列という条件になってしまいます。
比較演算子を「&(アンパサンド)」で結合して条件を設定します。
これで、順位を求めることができます。



















