重複しない乱数には「RAND関数」と「RANK関数」を組み合わせて作成
重複させない乱数を発生させるには、2つの関数「RAND関数」と「RANK関数」を組み合わせる必要があります。
「RAND関数」とは
冒頭の「RANDBETWEEN関数」は指定した範囲で整数の乱数を発生させました。
ランダムな数値を発生させる関数には、もう一つ「RAND関数」があります。
最初に「関数の検索」で表示されたもう一つの関数です。
「RAND関数」は、0以上1未満の乱数を発生させます。この関数には引数はありません。
上記のダイアログボックスが開きますので、「OK」ボタンをクリックします。すると下図のように小数の乱数が発生します。
B1セルをドラッグしてB12セルまでドラッグして数式をコピーします。すると、それぞれのセルに小数の乱数が発生します。
「RAND関数」は、下の図のように小数第15位までの数値になります。これなら数値の重複はあり得ません。
ちなみに16桁目から0になっているのは、エクセルの仕様上の制限で15桁を超えると0として扱われるためです。
「RANK関数」とは
「RANK関数」とは、指定した範囲内での順位を表示する関数です。
C1セルに「RANK関数」を挿入します。C1セルを選択し、「関数の挿入」をクリックします。
「関数の検索」ボックスに「RANK」と入力し、「検索開始」をクリックします。
表示された関数から「RANK」をクリックして「OK」ボタンをクリックします。
「RANK関数」は2つの引数を必要とします。
「=RANK(順位を調べたいセル,順位を計算する範囲)
下記をご覧になればわかると思いますが、「参照」セル範囲は「F4」キーを押して絶対参照にする必要がありますのでご注意ください。
3つ目の引数である「順序」は省略可能です。小さい数字順に順位を上にしたい場合には設定が必要ですが、その場合は3つ目の引数に「1」と入力します。
「OK」ボタンをクリックして結果を確認します。
B列を参照した順位が表示されています。
「RAND関数」と「RANK関数」で重複しない整数の乱数を発生させる
このようにB列に発生させた小数第15位までの乱数をC列で順位付けをすると、C列に「重複しない」整数の乱数を発生をさせることができました。
キーボードの「F9」キーを何度か押して再計算させ、重複しないことを確認してください。
「RAND関数」は、小数第15位までの乱数を発生させますから、理論上は百兆通りの乱数を発生させることが可能です。
エクセルの仕様上、数値は15桁しか扱うことができませんが、15桁もあれば必要十分でしょう。
重複しない整数の乱数を発生させて、抽選やくじ引きにも応用可能
重複しない整数の乱数を発生させて、抽選やくじ引きにも応用が可能です。
下の図は、1位に◎を、2位は○、3位は△、4位は×とした例です。
「IFS関数」を利用しています。
数式は「=IFS(C1=1,”◎”,C1=2,”○”,C1=3,”△”,C1=4,”×”,TRUE,””)」としています。
このように、「RAND関数」と「RANK関数」を利用することによって重複しない乱数を発生させることができました。
リストをランダムに並べ替えたり、抽選やくじ引きなどにも利用できる便利な機能です。
コメント