Rand関数とRank.Eq関数を組み合わせると、重複しないランダムな整数を求めることができます。
ビンゴの番号など作りたい場合に使えるテクニックです。
成果物

サンプルとして、1から50000の値が重複しない整数の並びを作ります。
重複しない乱数の求め方
0以上1未満のランダムな数字を求める
Rand()
Rand()
Rand関数、RandBetween関数の使い方について詳しくはこちら。

RandBetween関数は便利ですが、このようにそこそこの頻度で値が重複します。これではビンゴには使えません。

これに対し、Rand関数ではこのように小数が文字通り桁外れで、まず重複することがありません。

なので、Rand関数を並べてその順位(この場合、A列の中で上から何番目に大きい数字か)をRank.Eq関数で求めれば、

重複しない乱数の並びが得られる、という寸法です。

これを50000行作りたいので、A1とB1をコピーしたあと、A50000に移動して、A列とB列を選択し、

Ctrl+Shift+↑でデータがあるところまで選択して、

貼り付けします。乱数と順位が割り振られました。

このままだと何かするたびに50000×2件の計算をすることになるので、数式タブ→計算方法の設定で手動に設定し、自動で再計算されないようにします。

作った乱数表に重複の削除を実行すると、

重複しない乱数表が作れていることが確認できました。

B列の乱数をRank.Eq関数からただの整数にしたいので、C列に値をコピーし、

A列とB列を削除したら完成です。

作業が完了したら、計算方法を忘れずに自動に戻しておきます。
他の方法
数字をたとえば1から100までオートフィルで並べて、シャッフルさせることでも同様の結果が得られます。

Excel(エクセル):ランダム、乱数
Excelの乱数、ランダム関連操作、関数等まとめです。
乱数の作成
関数で乱数を求める場合、Rand関数(0~1の乱数)またはRandBetween関数(指定範囲の整数)を用います。
もしビンゴで使うような重複...
コメント