-
Home »
-
エクセル関数一覧表 »
-
ランダムな数値を返す関数の使い方
- エクセルの乱数を発生させる関数RAND関数と任意の範囲のランダムな整数値を発生させるRANDBETWEEN関数についてまとめています。
これらの関数を使うことでサンプルデータの作成や、データをランダムに並べ替えるといった使い方ができます。
- Excel for Microsoft365で使用できるRANDARRAY関数の使い方はRANDARRAY関数でランダムな数値の配列を返すをご覧ください。
乱数を返す topへ
ランド(ランダム)
=RAND()
0以上で1より小さい乱数を発生させます。
ワークシートが再計算されるたびに、新しい乱数が返されます。
- RAND関数では0以上で1よりも小さい数値が返されます。1は含まれませんのでご注意ください。
- B2セルに =RAND() と入力して、B10セルまでオートフィルで数式をコピーした例です。
- RAND関数で乱数を発生させた後、ワークシートが再計算されるたびに乱数の値が変更されます。
[F9]キーで再計算を実行できますが、コマンドでの再計算の方法は 再計算を手動で行うには? をご覧ください。
- 数式を数値に置き換えるには、数式バーに「=RAND()」と入力して[F9]キーを押します。
この時の「F9」は数式の検証(デバッグ)になります。再計算の[F9]とは異なる使い方です。
- 数式バーにカーソルが表示されています
- [F9]キーを押すと、値に変換されます。[Enter]キーを押すと確定されます。
元の数式 =RAND() に戻すには[Esc]キーを押します。
- 複数の数式を数値に置き換えるには、コピーして値の貼り付けで置き換えることができます。
- 「a」と「b」の範囲で乱数を発生させるには、=RAND()*(b-a)+a とします。
- 1〜10の範囲で乱数を発生させる例
セルB1に=RAND()*(10-1)+1と入力し、B10までフィルハンドルをドラッグして数式をコピーします。
B列に乱数が表示されました。
小数部分があるところがRANDBETWEEN関数と異なります。
- セルC1に=ROUND(B1,0)と入力し、C10までフィルハンドルをドラッグして数式をコピーします。
1〜10の整数値に丸めています。
- =ROUND(RAND()*(10-1)+1,0)と一つの数式にできますが、説明のために2列に分けています。
(RAND関数で返される値は小数値になっていることを示すためです。)
- この方法では、1〜10の乱数が表示できましたが、同じ値「2」が3個あり、「6」が2個あり、「1」や「4」がありません。
- 10個の乱数を発生させて、整数値にしても同じ値が出てくることが上記の例でわかると思います。
同じ値が出てこないようにするには、10個の乱数の大小で順位を付けることで1〜10をそれぞれ1個だけにすることができます。
なお、この考えでは10個の乱数のなかに同じものはない・・・ということが前提になります。
- 作業列(C列)を使います。セルC1に=RAND() と入力し、C10までフィルハンドルをドラッグして数式をコピーします。
- セルA1に=RANK(C1,$C$1:$C$10) と入力し、A10までフィルハンドルをドラッグして数式をコピーします。
重複しない1〜10の数値を表示することができました。
- 再計算または【F9】キーを押すごとに値が変化しますので、値を固定したい時は値の貼り付けを行います。
- A1:A10を選択して、[ホーム]タブの[コピー]ボタンをクリックします。
ショートカットキーは [Ctrl]+[C] です。
- [ホーム]タブの[貼り付け]→[値]をクリックします。
- A1:A10が数値になります。C列は不要ですので削除します。
-
Microsoft365ではSEQUENCE関数やRANDARRAY関数やSORTBY関数を使うことができます。
- D2セルに =SORTBY(SEQUENCE(10),RANDARRAY(10)) と入力しています。
SEQUENCE(10) で 1〜10 の値を配列に配置します。
SORTBY関数を使って、SEQUENCE(10) を RANDARRAY(10)で配列に配置した乱数10個の昇順に並べ替えています。
- 上記の例は1〜10と連続した値でしたが、任意の数値を重複しないように1個だけ表示したい場合は?
連続しない数値なので、表示したい任意の数値をどこかに入力する必要があります。(以下の例ではF列を使っています)
- 下図のような作業列を利用してみました。
- D列に乱数を入れます。 =RAND()
- E列では乱数の順位を求めます。 =RANK(D1,$D$1:$D$10)
- F列に表示したい任意の数値を入力します。
A列に =VLOOKUP(ROW(A1),$E$1:$F$10,2,FALSE) として任意の数値を表示することができました。
- RANK関数で求めた1〜10の横のセルの値をVLOOKUP関数で順番に取り出しています。
参照の型 FALSEを0(ゼロ)として、 =VLOOKUP(ROW(A1),$E$1:$F$10,2,0) としてもOKです。
-
Microsoft365ではRANDARRAY関数やSORTBY関数を使うことができます。
- A1セルに =SORTBY(F1:F10,RANDARRAY(10)) と入力しています。
- A3:A12に名前が入力されています。
B3:B12に =RAND() と入力しています。
- B列のセルを選択した状態で、「昇順で並べ替え」または「降順で並べ替え」を実行します。
この並べ替えを実行するたびに再計算が行われますので、RAND()で返す値が変わり、データがこの変わった値で並べ替えられます。
よって、A列の並び順はランダムに変わります。
- 並べ替えを実行した後に再計算されますので、B列の値は昇順になっていません。
表示されている乱数で並べ替えて、そのあと再計算で乱数の値が変化しています。
つまり、並べ替えの基になった値は再計算の実行によって消えており、実行後には確認することはできません。
- 「昇順で並べ替え」または「降順で並べ替え」を実行することで並び順が変化するのを確認できます。
- Excel2007以降では「昇順で並べ替え」または「降順で並べ替え」は[データ]タブにあります。
-
Microsoft365ではRANDARRAY関数やSORTBY関数を使うことができます。
- データリストを他のセルに並べ替える方法になります。
C3セルに =SORTBY(A3:A12,RANDARRAY(10)) と入力しています。
- 乱数を使ってパスワードを作成する方法は、以下のリンク先を参照してください。
- マクロ(VBA)を使って乱数を生成する例は、以下のリンク先を参照してください。
- Excel2007以降は、Excelのオプションでは、[数式]を選択して、「手動」にチェックを入れます。これで、再計算は手動になり自動で再計算されなくなります。
↓
[数式]タブの計算方法 グループにある[再計算実行]をクリックするか、[F9]キーを押して再計算を実行します。
- Excel2003以前では[ツール]→[オプション]を実行します。
[計算方法]タブの「手動」にチェックを入れます。これで、再計算は手動になり自動で再計算されなくなります。
手動で再計算を行うには[再計算実行]ボタンをクリックするか、[F9]キーを押すことで再計算が実行されます。
指定範囲の乱数を返す topへ
ランド ビトウィーン(ランダム ビトウィーン)
=RANDBETWEEN(最小値,最大値)
指定された範囲で一様に分布する整数の乱数を返します
Excel2003以下のバージョンでエラー値 #NAME? が返される場合は、分析ツール アドインを組み込む必要があります。
- RANDBETWEEN関数では指定した範囲の整数の乱数が返されます。
- =RANDBETWEEN(1,10)として、1〜10の乱数を発生させた例です。
- 上記のように、1〜10の整数値をランダムに10個発生させると、同じ値が複数あることに気づきます。
同じ整数値が1個だけ表示するには、RAND関数とRANK関数を使う方法が考えられます。
- RANDBETWEEN関数を使って、10人の中から一人を抽選で選んでみたいと思います。
- A2:A11に候補者名が入力してあります。
- C2セルに=INDEX(A2:A11,RANDBETWEEN(1,10)) として、A2:A11からINDEX関数とRANDBETWEEN関数でランダムに1つのセルの値を取り出しています。
- [F9]キーで再計算を実行すると、当選者名が変わるのを確認することができます。
スポンサードリンク
よねさんのWordとExcelの小部屋 »
エクセル関数一覧表 »
ランダムな数値を返す関数(RAND関数、RANDBETWEEN関数)の使い方
PageViewCounter
Since2006/2/27