- 締切済み
access 無作為抽出をしたい
数百件あるレコードから無作為で10数件のレコードを抽出するようなことできますか? ・重複データははきださない。 ・できればやるたびに違う結果がでる。 ・たとえば果物から10件、野菜から12件…ということができればなお嬉しいです。 できなければ果物や野菜だけはきだしてから、個別に抽出しますが…。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mataro
- ベストアンサー率32% (18/55)
こんにちは。 以前似たものを造ったことがあります。(但し、VBAとSQLの知識が必要です。) 方法としては、 1.抽出元のテーブルにオートナンバー(もしくはその代わりになるもの)を付ける 2.RND関数を使用して無作為のレコードを抽出する (RND関数で得た数字を利用して、DLOOKUP関数でデータ抽出) 3.抽出したデータを抽出先テーブルに登録 (DOCMD.RUNSQLにて”INSERT~”で登録) 4.2~3をDO ~ LOOPにて件数分登録されるまで処理をする です。 >・重複データははきださない。 抽出先に登録する前に既に登録されてないかチェックすればいいです。(DCOUNTを使用) >・できればやるたびに違う結果がでる。 RND関数を使用する前にRANDOMIZEステートメントを実行すればいいです。 >・たとえば果物から10件、野菜から12件…ということができればなお嬉しいです。 色々方法はありますが、品物ごとにDO~LOOPを作成すればいいと思います。 何かあれば補足します。
> 数百件あるレコードから無作為で10数件のレコードを抽出するようなことできますか? > ・重複データははきださない。 > ・できればやるたびに違う結果がでる。 Rnd関数で重複しない一意な乱数列を必要件数だけ生成し、Top句、またはAbsolutePositionでレコードを抽出すれば、可能と思われます。