2/17/2019

Access。順位/総数をExcelのように算出したいけど、どうやるの?【RANK】

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のようなことを行ることができますので、いろいろ試してみるといいかもしれませんね。