見出し画像

ランダム抽出を〇〇件

業務でランダムに〇〇件、定期的に抽出したい。

そんなオファーをいただきました。

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

いいなと思ったら応援しよう!

この記事が参加している募集