Excelで繰り返しのない乱数を生成する方法

  • これを共有
Michael Brown

今回は、Excelで数字を繰り返さずにランダム化するためのいくつかの異なる数式について説明します。 また、繰り返しのない乱数、日付、文字列のリストを作成できる万能ランダムジェネレータも紹介します。

ご存知のように、Microsoft ExcelにはRAND、RANDBETWEEN、RANDARRAYなどの乱数生成関数がありますが、どの関数の結果もダブらないという保証はありません。

このチュートリアルでは、ユニークな乱数のリストを作成するためのいくつかの数式を説明します。 一部の数式は最新バージョンのExcel 365および2021でのみ動作し、他の数式はExcel 2019、Excel 2016、Excel 2013以前のどのバージョンでも使用できることに注意してください。

    ステップを定義したユニークな乱数のリストを取得する

    動的配列に対応したExcel 365およびExcel 2021でのみ動作します。

    Excelの最新版をお持ちの方は、一番簡単な方法として 一意な乱数リスト は、SORTBY、SEQUENCE、RANDARRAYの3つの新しい動的配列関数を組み合わせたものです。

    sortby(シーケンス( n ), RANDARRAY( n ))

    どこ n は、取得したい乱数値の数です。

    例えば、5個の乱数のリストを作成する場合、5を n :

    =sortby(sequence(5),randarray(5))です。

    一番上のセルに数式を入力し、Enterキーを押すと、指定したセル数以上に自動的に結果が波及します。

    下のスクリーンショットにあるように、この数式は実際に は、1から5までの数字をランダムに並べます。 もし、繰り返しのない古典的な乱数発生器が必要なら、以下に続く他の例をチェックしてみてください。

    上記の式では、埋める行数だけを定義しています。 他のすべての引数はデフォルト値のままです。つまり、リストは 1 から始まり、1 ずつ増加します。 最初の数字と増加分を変えたい場合は、3 番目の値 ( 立ち上がり )、4位( ステップ ) の引数を指定します。

    例えば、100から始めて10ずつ増やす場合は、次のような式になります。

    =sortby(sequence(5, , 100, 10), randarray(5))

    この処方の仕組み

    内側から外側への働きかけは、以下の通りです。

    • SEQUENCE関数は、指定されたまたはデフォルトの開始値と増分するステップサイズに基づいて、連番の配列を作成します。 この配列は、次のようになります。 勢揃い SORTBYの引数です。
    • RANDARRAY 関数は、配列と同じサイズの乱数(ここでは 5 行 1 列)の配列を作成します。 最小値と最大値はあまり重要ではないので、デフォルトのままにしておきます。 この配列は、配列の中の by_array(バイアレイ SORTBYの引数です。
    • SORTBY関数は、SEQUENCEで生成した連番をRANDARRAYで生成した乱数配列でソートする関数である。

    この簡単な数式は、繰り返しのない乱数のリストを作成するものであることに留意してください。 定義済みステップ この制限を回避するためには、以下の計算式を発展させたものを使用します。

    重複のない乱数リストを生成する

    動的配列に対応したExcel 365およびExcel 2021でのみ動作します。

    Excelで重複のない乱数を生成するには、以下の一般的な計算式のいずれかを使用します。

    ランダムな整数 :

    index(unique(randarray( n ^2, 1, ミニ , マックス , true)), sequence( n ))

    ランダム小数点 :

    index(unique(randarray( n ^2, 1, ミニ , マックス false)), sequence( n ))

    どこで

    • N は生成する値の数である。
    • 最小 は最小値である。
    • マックス は最大値です。

    例えば、5つのリストを作成する場合 乱数整数 を1〜100まで、繰り返しなしで計算する場合は、この式を使用します。

    =index(unique(randarray(5^2, 1, 1, 100, true))), sequence(5))

    5つのユニークなランダムを生成するために 十進数 RANDARRAYの最後の引数にFALSEを入れるか、この引数を省略します。

    =index(unique(randarray(5^2, 1, 1, 100)), sequence(5))

    この処方の仕組み

    一見すると、少し難しい数式に見えるが、よく見るとその理屈は非常にわかりやすい。

    • RANDARRAY関数は、指定した最小値と最大値に基づいて乱数の配列を作成します。 生成する値の数を決定するために、希望するユニーク数を2の累乗にします。 結果の配列にはいくつの重複があるか分からないので、UNIQUEが選択する十分な値の配列を用意する必要があります。 この例では、5つのユニーク数だけ必要となります。乱数ですが、RANDARRAY に 25 (5^2) を生成するように指示します。
    • UNIQUE関数は、すべての重複を削除し、重複のない配列をINDEXに「供給」します。
    • UNIQUE で渡された配列から、INDEX 関数で最初の n SEQUENCEで指定された値(この例では5個)が、すでにランダムな順序で並んでいるので、どれが生き残るかはあまり重要ではありません。

    注意:非常に大きな配列の場合、この式は少し遅くなるかもしれません。 例えば、1000個のユニークな数字のリストを最終結果として得るために、RANDARRAYは1,000,000個の乱数の配列(1000^2)を内部で生成しなければなりません。 このような状況では、べき乗の代わりに、以下の乗算が可能です。 n ただ、UNIQUE関数に渡す配列が小さい(一意な乱数値の希望数に比べて小さい)と、流出範囲内のすべてのセルが結果で満たされない可能性が大きくなることを覚えておいてください。

    Excelで繰り返しのない乱数の範囲を作成する

    動的配列に対応したExcel 365およびExcel 2021でのみ動作します。

    繰り返しのない乱数の範囲を生成するには、次の式を使用します。

    index(unique(randarray( n ^2, 1, ミニ , マックス )), SEQUENCE( 漕ぎ手 , コラムス ))

    どこで

    • n は、埋めるセルの数である。 手計算を避けるために、(行数 * 列数) で指定することができる。 たとえば、10行5列を埋めるには、50^2 または (10*5)^2 を使用する。
    • は埋めるべき行の数です。
    • コラム は埋めるべき列の数である。
    • 最小 が最低値です。
    • マックス が最高値です。

    お気づきのように、数式は基本的に前の例と同じです。 唯一の違いはSEQUENCE関数で、この場合は行と列の両方の数を定義しています。

    例えば、10行3列の範囲を1〜100のユニークな乱数で埋めるには、次の式を使用します。

    =index(unique(randarray(30^2, 1, 1, 100)), sequence(10, 3))

    そして、数字の繰り返しのないランダムな小数の配列を生成します。

    整数が必要な場合は、RANDARRAYの最後の引数をTRUEに設定します。

    =index(unique(randarray(30^2, 1, 1, 100, true))), sequence(10,3))

    Excel 2019、2016以前のバージョンでユニークな乱数を生成する方法

    Excel 365 と 2021 以外のバージョンでは動的配列がサポートされていないため、上記の解決策はそれ以前のバージョンの Excel では機能しません。 ただし、解決策がまったくないわけではなく、あと数ステップ実行する必要があるのみです。

    1. 乱数のリストを作成する。 必要に応じて、どちらかを使用する。
      • 0から1までのランダムな小数を生成するRAND関数、または
      • 指定した範囲のランダムな整数を生成する RANDBETWEEN 関数です。

      実際に必要な値よりも多く生成してください。いくつかは重複しているので、後で削除します。

      この例では、以下の式を用いて、1から20までの10個のランダムな整数のリストを作成しています。

      =randbetween(1,20)

      複数のセルに一度に数式を入力するには、すべてのセル(この例ではA2:A15)を選択し、数式バーに数式を入力してCtrl + Enterを押します。 また、通常通り最初のセルに数式を入力し、必要な数だけセルにドラッグすることも可能です。

      いずれにせよ、結果はこのようになります。

      お気づきのように、最終的には10個のユニークな乱数があればよいのですが、14個のセルに数式を入力しています。

    2. 数式を値に変更する。 RAND と RANDBETWEEN はワークシートを変更するたびに再計算されるため、乱数のリストは常に変化します。 これを防ぐには、次のようにします。 貼り付け特化>値 で説明したように、数式を値に変換して、乱数の再計算を停止する方法です。

      数式ではなく、数値が表示されていることを確認してください。

    3. 重複を削除する。 これを行うには、すべての数字を選択し、[Select]メニューから[Delete]を選択します。 データ tab> データツール をクリックします。 複製を削除する である。 複製を削除する のダイアログボックスが表示されたら、そのまま「OK」をクリックします。 詳しい手順は、「Excelで重複を削除する方法」をご覧ください。

    完了!重複がなくなりましたので、余分な番号を削除してください。

    ヒント:Excelの内蔵ツールの代わりに、当社の高度なDuplicate Remover for Excelを使用することができます。

    乱数が変化しないようにする方法

    ExcelのRAND、RANDBETWEEN、RANDARRAYなどのランダム化関数はすべて揮発性です。 つまり、スプレッドシートを変更するたびに再計算されます。 その結果、変更のたびに新しいランダム値が生成されます。新しい数値の自動生成を防ぐには、数式を固定値に置き換える「特殊キーと値の貼り付け」機能を使ってください。 その方法は、次のとおりです。

    1. ランダムな数式を含むすべてのセルを選択し、Ctrl + Cキーを押してコピーします。
    2. 選択した範囲を右クリックし ペースト・スペシャル > 価値観 または、Shift + F10 を押してから V を押すことでも、このオプションのショートカットを利用できます。

    詳しい手順については、「Excelで数式を値に変更する方法」をご覧ください。

    繰り返しのないExcel用乱数発生器

    Ultimate Suiteのユーザーは、Excelに汎用ランダム・ジェネレータをすでに持っているので、上記のソリューションは必要ありません。 このツールは、繰り返しのない整数、小数、日付、ユニークなパスワードのリストを簡単に作成できます。 その方法は次のとおりです。

    1. について Ablebits Tools タブをクリックします。 ランダム化 > ランダムジェネレーター .
    2. 乱数で埋め尽くす範囲を選択します。
    3. について ランダムジェネレーター ペインで、次の操作を行います。
      • 値の種類は、整数、実数、日付、ブール値、カスタムリスト、文字列(強力な固有パスワードの生成に最適!)の中から選択します。
      • を設定します。 から への の値です。
      • を選択します。 ユニークな価値観 のチェックボックスにチェックを入れます。
      • クリック 生成する .

    これで完了です!選択された範囲は、繰り返しのない乱数で一度に埋め尽くされます。

    このツールやUltimate Suiteに含まれる他の魅力的な機能を試してみたいという方は、ぜひトライアル版をダウンロードしてください。

    以上、エクセルで数字を重複させずにランダム化する方法でした。 読んでくださってありがとうございました!また来週のブログでお会いしましょう。

    練習用ワークブック(ダウンロード

    エクセル(.xlsxファイル)でユニークな乱数を生成する

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。