Access。順位/総数をExcelのように算出したいけど、どうやるの?
<Access>
AccessでもExcelと同じように順位。ランキングを算出して、さらに総数も表示したい場合、どのようにしたらいいのでしょうか?ということで、作成したいのは、次のようなクエリですね。
そして、元になるテーブルがこのようになっています。
【Excelでは、RANK.EQ関数。Accessでは。】
まずは、順位をAccessで算出するには、どうするのかを確認しておきましょう。クエリを作りながら確認していきましょう。
演算フィールドには、
順位: DCount("金額","T顧客売上管理","金額>" & [金額])+1
と設定します。
DCount関数でAccessは順位を算出することができます。
このDCount関数は、条件を満たすレコード数を数える関数で、条件に『直前のレコードまで』という設定をすることで順位を算出することができます。
今回は、金額フィールドで現在のレコードの金額より大きい金額のレコードを数えることで、順位を算出するという流れです。
なので、1位のデータは、それ以上のデータがないので、0(ゼロ)になってしますので、最後に+1(プラス1)しているわけですね。
ちなみに、DCount関数の関数式は、
DCount(フィールド名,テーブルまたはクエリ名,条件式)という引数になっています。
なお、DCount関数の算出結果は、文字列で算出されますが、+1(プラス1)することで、数値にで算出されます。
では、データシートビューにして確認してみましょう。
順位を算出することができましたね。
【全レコード数を算出する】
順位は算出することができましたが、では、データ総数、すわなち全レコード数はどのようにして算出したらいいのでしょうか?数えるわけですから、ここもDCount関数を使います。
全レコードを数えるには、”*”を使うことで、簡単に算出することができます。
次の演算フィールドを作って、確認してみましょう。
総数: DCount("*","T顧客売上管理")
今回は、順位/総レコード数で表示したいわけですから、この2つの数式を結合すればいいわけですね。
結合自体は、Excelと同じで、『&』で結合することができます。
ただ、このまま結合すると、1/10と10/10というようになってしまい、きれいに桁がそろいません。
できれば、01/10のように、ゼロ付き数値で表示したいと思います。
ゼロ付き数値にするには、ExcelではTEXT関数を使いますが、Accessでは、Format関数を使うことで、ゼロ付き数値で表示することができるようになります。
では、演算フィールドを次のように作ります。
順位: Format(DCount("金額","T顧客売上管理","金額>" & [金額])+1,"00") & " / " & DCount("*","T顧客売上管理")
データシートビューにして確認してみましょう。
このように、Excelとは微妙に異なる関数を使うことで、Excelのようなことを行ることができますので、いろいろ試してみるといいかもしれませんね。