ランダム抽出を〇〇件
業務でランダムに〇〇件、定期的に抽出したい。
そんなオファーをいただきました。
Accessでランダムに〇〇件抽出するときは、どうしたら良いでしょうか?
1.ランダムに並べ替え
まず、VBAを開き、標準モジュールに以下のコードを書きます
Public Function test_Randomize()
Randomize
End Function
※コード説明
・Randomize・・・乱数系列初期化
下地はこれで完成。
Randomizeステートメントを入れないと、毎回同じシーケンスとなってしまいますので必要です。
モジュールを書いたら、対象のテーブルを使用した新規クエリを作成し、Rnd関数を入れます。
新規クエリを作成した際に、フィールドグリッドに表示したいフィールドを指定し、並べ替えをしたい引数(ここではID)を指定したRnd関数をフィールドグリッドに記載します。
式1: Rnd([ID])
Rnd関数を入れた箇所は”表示”チェックを外します。
※乱数を表示させないためです。
これでランダムに並べ替える設定は完成です。
2.〇〇件を抽出
〇〇件は毎回決まっている数という前提として、例えば300件だとします。
その場合、クエリのプロパティシートを開き"トップ値"に指定の件数を指定します。
これで完成です。
SQLで現すと下のようになります。
SELECT TOP 300 [商品分類情報 (レコード)].ID
FROM [商品分類情報 (レコード)];
件数でなくても、全体のパーセンテージでの設定もできます。
3.どういうシーンで使う
例えば、
・ランダムに抽出した〇〇人にアンケートを送りたい
・ギフト抽選を行うので〇〇人の当選者を出してほしい
・人を集めたいので、この母集団から〇〇人ランダムにピックアップしてほしい
などのシーンで使えるのではないでしょうか。
引用データ:経済産業省 METI POS小売販売額指標[ミクロ] 商品分類表品目例
https://www.meti.go.jp/statistics/bigdata-statistics/bigdata_pj_2019/pos_gfk_intage.html