4/14/2016

Excel。Lottery。くじ引き番号。ランダムの数値を重複させない簡単な方法


Excel。くじ引き番号。ランダムの数値を重複させない簡単な方法

<RAND関数&RANK.EQ関数>


先日知り合いの方の講師の先生から、席替えをするんだけど、
番号を重複しないで振る方法って何かないかなぁ~とのこと。

なんでも、RANDBETWEEN関数を使うと、重複しちゃって、
しかも、削除をしたり、文字を追加したりなどすると、コロコロ変わっちゃって、
数値が固定されないので、困っているというもの。

確かに、RANDBETWEEN関数は、重複を防ぐことが出来ないんですよね。

便利そうなんだけど、ちょっと不便。

ランダム数が少ない場合は、「自力で」でもいいのですが、増えてくるとやっぱり、
面倒くさくなるし、重複を見逃しちゃうかもしれないし。

ということで、今回は、重複しないランダム数値の設定方法をご紹介していきます。

まず、下記の表があります。

こういう表を作りたい訳ですね。

では、RANDBETWEEN関数だとどうなるのかを確認してみましょう。

C3をクリックして、RANDBETWEEN関数ダイアログボックスを表示しましょう。

最小値は1
最大値は10
と入力してOKボタンをクリックしましょう。オートフィルで数式をC12までコピーしましょう。

すると、ランダムで1~10までの数値が振られてはみたものの…やっぱり重複している。

これでは、自力で何とかしないといけないわけです。

けど、面倒なので何かいいアイディアはないですか?という訳ですね。

そこで、重複するかもしれないけれど、重複しないような関数があるのです、

それは、RAND関数。


この関数は、小数点第7位までをランダムで表示する関数なのですが、
小数点第7位までならば、ほぼ重複することはないので、今回はこのRAND関数と、
順位を出す、RANK.EQ関数のコンビネーション技で、
重複しないランダムの数値を算出する方法をやってみましょう。

D2にRANDと入力して、
D3に、

= RAND()

と入力して、オートフィルでD12まで数式をコピーします。

まず、RAND関数を作って、ランダムな数値を算出させます。

そして、この数値の順位を算出すれば、1~10までの重複しない数値を算出できるという訳です。

なお、D列は再計算され続けますので、気にせず、
C3にRANK.EQ関数を作っていきますので、
RANK.EQ関数ダイアログボックスを表示しましょう。

数値はD3
参照は、$D$3:$D$12
順序は、昇順でも降順でも構わないので、今回は0にしておきます。

あとは、OKボタンをクリックしましょう。オートフィルを使って数式をC12までコピーします。

これで、重複しないランダムな数値を作ることができました。

が、D列が固定していないので、値の貼り付けを使って、数値を固定化します。
D3:D12を範囲選択して、コピーします。

貼り付けボタンから、値を選択します。すると、数式ではなく値に代わりました。

これで、C列の数値は変わることが無くなりましたので、このようにすれば、
重複しないランダムな数値を作ることが出来ますので、何か機会がありましたら、
やってみると面白いですよ。