富裕層・投資家の「今と先」を伝えるキュレーションサイト

【エクセル関数】抽選番号をランダムに割り当てるには?

問題:次の表組の「抽選番号」欄に、ランダムかつ重複しない人数分の数字を自動入力せよ。 難易度:☆☆☆☆★ 実用度:☆☆☆★★ 目標ステップ数:7 解答: 乱数(ランダムな数値)を生成する関数は複数用意されているが、数値の重複を極力避けるためには「RAND(ランド)」関数を使うのが基本。さらに順位を求める「RANK(ランク)」関数を併用すれば、見分けやすい抽選番号を割り当てることができる。では、標準解答の手順を見ていこう。 ●STEP1 まず、抽選番号の基になる、乱数を生成するための関数を入力する。数式を入力したいセル(ここではG2)を選択し、「数式バー」に「=RAN」と入力。表示される関数の候補から「RAND」をクリック。 ●STEP2 「=RAND(」と、関数の一部が自動入力されるので、Enterキーを押す(このとき数式は「=RAND()」となっている)。 ●STEP3 選択範囲の右下にポインタをあわせダブルクリックすると、オートフィル機能が働き、人数分の乱数が自動入力される。 ●STEP4 続いて、人数分の乱数から、個別の抽選番号を人数分の整数として求める。数式を入力したいセル(ここではA2)を選択し、「数式バー」に「=RANK」と入力。表示される関数の候補から「RANK」をクリック。 ●STEP5 「=RANK(」と、関数の一部が自動入力される。計算のもとになる数値が入力されたセル(ここではG2)をクリックして選択し、続けて「,」(半角のカンマ)を入力。 ●STEP6 続けて、比較対象となる範囲を指定する。ここでは「G:G」と入力し、列G全体を範囲に指定している。最後にEnterキーを押して数式を確定させる。 ●STEP7 抽選番号が入力される。選択範囲の右下にポインタをあわせダブルクリックすると、オートフィル機能が働き、人数分の抽選番号が自動入力される。 【今回のまとめ】 今回用いたのは、RAND関数とRANK関数の2つだ。RAND関数は「=RAND()」という構文となり、カッコの中にはなにも入らないが、これで0以上1未満の乱数(実数)が生成される。 乱数を生成する関数は、このほかに「RANDBETWEEN(ランドビトウィーン)」関数がある。たとえば「=RANDBETWEEN(1,100)」とすれば、1から100までの整数の乱数が生成できるのだが、この場合、生成はランダムだが少ない範囲を指定した場合は重複する結果が出てしまう可能性が高くなる。数値の重複を避けるためには、RAND関数を使うのが基本だ。ただし、RAND関数も、厳密には結果が重複する可能性がゼロではない点に注意しよう。 RAND関数で求めた乱数は、「0.742211575」というように、小数点以下の数値になるため、このままでは抽選番号として使いにくい。そこで役立つのが、指定した範囲内にある数値の順位を求める「RANK(ランク)」関数だ。まったく同様の機能を持つ「RANK.EQ(ランク・イコール)」関数もある。 「=RANK(数値,範囲,順序)」という構文になり、「順序」に0を指定すると降順、1または0以外を指定すると昇順の順位が求められる。「順序」は省略することも可能で、その場合は自動的に降順の順位が求められる。今回の問題では、RAND関数で生成した乱数を降順でみた場合の順位を求めているわけだ。 個別の抽選番号を割り当てるだけなら、ここまでで十分なのだが、注意してほしいのはRAND関数で生成する乱数は、関数の再計算を行うたびに更新されてしまうことだ。ワークシートを開く際にも再計算が実行されるので、このままでは表組を参照するたびに抽選番号が変わってしまうことになる。 抽選番号を固定させたい場合は、次の操作をして、関数を向こうにしておこう。 ●手順1 固定させたい抽選番号の範囲を選択し右クリック。表示されたメニューから「コピー」を選択する。ショートカット(CTRL+Cキー)でコピーしてもよい。 ●手順2 範囲が選択されている状態のまま、再度右クリックして表示されたメニューから「貼り付けのオプション」-「値」をクリック。 これで、RANK関数で求めた値のみが貼り付けされ、抽選番号が更新されることがなくなる。 この手順で抽選番号を固定させれば、番号順での並べ替えも可能になる。RANK関数の数式が消えてしまうのが困る場合は、コピーしたシートで別途操作をするとよいだろう。