Excel VBA:重複のない乱数発生器(4例)

  • これを共有
Hugh West

の4つの例を図解しています。 らんすうはっせい ここでは、ExcelのVBAを使用して、重複のない乱数を生成する方法を説明します。 ここでは、Excelに組み込まれているRnd関数を使って、コードを構成します。 例を見ながら、ユニークな乱数を生成するテクニックを学びましょう。

練習用ワークブックをダウンロードする

この練習用ワークブックをダウンロードして、この記事を読みながらエクササイズしてください。

重複のない乱数発生器.xlsm

Excel VBAで重複のない乱数生成の4つの例

Visual Basic Editorでコードを書く

への 重複のない乱数を生成する が必要です。 かいほうてき VBAコードを書く において ビジュアルベーシックエディタ。 をフォローしてください。 段階 まで かいほうてき その ビジュアルベーシックエディタ で、そこにコードを書きます。

  • に行ってみてください。 デベロッパー のタブをクリックします。 エクセルリボン .
  • クリック その Visual Basicのオプションです。

  • での Visual Basic For Applications をクリックします。 ドロップダウンを挿入する まで 選ぶ その 新モジュール オプションを使用します。

今、あなたの コード 内は ビジュアルコードエディタ F5を押す まで 走る それを

1. VBAのRnd関数を使って、重複のない乱数を生成する

があります。 Rnd機能 が使われています。 エクセルブイビーエー まで 乱数を発生させる それは 0の間 1専用。

タスク : 10個の乱数を発生させる 0 1 において セルA1:A10です。

コード : インサート 以下 コード において ビジュアルベーシックエディタ を押してください。 F5 まで 走る それを

 Public Sub GenerateRandomNumNoDuplicates() Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = Rnd Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Rnd Loop Rng.Value = randomNumber Next End Sub 

出力 : 上のスクリーンショットは 10個のユニークな乱数 において の範囲は0~1です。

コードの説明です。

このコードでは Rnd機能 まで 乱数を入れる において セル範囲A1:A10 ...の前に 投入 a しんばん を使用しました。 Do While ループ まで めす に対して 番号 において 定義済みセル範囲 (A1:A10) かどうか 在りし日 または ノット を確認すること。 存在 番号 において セルレンジ でコードを構成し、そのたびに COUNTIF機能 この機能 べんけいじま a しんらんすう において リスト を挿入する前に、すでに存在する数字を挿入します。

続きを読む 乱数を生成するExcelの計算式(5例)

2. 下限と上限を定義し、重複を排除した乱数生成器

への 乱数を発生させる かくていはんい を設定する必要があります。 下方向 じょうきゅう をVBAのコードで使用することができます。 下方向 最低数 とのことです。 じょうきゅう さいこうすう において レンジ を乱数発生器として使用することができます。 をコードに追加しました。

(upperbound - lowerbound + 1) * Rnd + lowerbound

2.1 乱数発生器 - 10進数

タスク : 10個の乱数を発生させる 10 20 において セルA1:A10です。

コード : インサート 以下 コード において ビジュアルベーシックエディタ を押してください。 F5 まで 走る それを

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Loop Rng.Value = 1 randomRange.Value = 2 randomNumber = (upperbound + 1) * Rnd + lowerboundrandomNumber Next End Sub 

出力 : 上のスクリーンショットは 10個のユニークな乱数 において の範囲は1~10です。

2.2 乱数発生器-整数型

このイラストでは VBA Int関数 まで 取り除く その ぶぶんひん から 乱数 .

タスク : 20個のランダムな整数値を生成する 1 20 において セルA1:B10

コード : インサート 以下 コード において ビジュアルベーシックエディタ を押してください。 F5 まで 走る それを

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Int((upperbound - lowbound + 1) * Rnd + lowbound) LoopRng.Value = randomNumber Next End Sub 

出力 : 上のスクリーンショットは 20個のユニークな乱数 において の範囲は1~20です。

続きを読む Excelで繰り返しのない乱数発生器(9つの方法)

類似の読み物

  • Excelのデータ解析ツールと関数による乱数発生器
  • エクセルでランダムなデータを生成する方法(9つの簡単な方法)
  • Excelで5桁の乱数ジェネレータ (7例)
  • Excelで4桁の乱数ジェネレータ(8例)
  • Excelでリストから乱数を生成する(4つの方法)

3. Excel VBAでユニークな乱数生成器の小数点以下の桁数を指定する

を使用することができます。 ラウンド機能 に変更しました。 言い当てる その 番号 小数点以下 において 乱数発生ユニークナンバー . シンタックス 関数のis

Round(expression, [numdecimalplaces])

が必要です。 言い当てる その 第2引数 私たちのように 必要条件 .

タスク : 小数点以下2桁の乱数を20個生成する 1 20 において セルA1:B10

コード : インサート 以下 コード において ビジュアルベーシックエディタ を押してください。 F5 まで 走る それを

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowbound + 1) * Rnd + lowerbound, 2)ループ Rng.Value = randomNumber Next End Sub 

出力 : 上のスクリーンショットは 小数点以下2桁のユニークな乱数20個 において の範囲は1~20です。

続きを読む Excelで小数を含む乱数を生成する(3つの方法)

4. Excel VBAで重複のない乱数生成のためのユーザーフォームを開発する

このイラストでは ユーザーフォーム において エクセルブイビーエー まで 乱数を発生させる をもって 重複なし .

タスク 20個の乱数を発生させる セル範囲内 A1:B10 を使用しています。 ユーザーフォーム とのことです。 入力値 (i) 下方向 じょうきゅう 小数点以下の桁数

UserFormを作成します。

以下の手順で作成します。 ユーザーフォーム 私たちの 希望入力欄 .

  • に行ってみてください。 デベロッパー のタブをクリックします。 エクセルリボン .
  • クリック その Visual Basicのオプションです。

  • での Visual Basic For Applications をクリックします。 ドロップダウンを挿入する まで 選ぶ その ユーザーフォーム オプションを使用します。

  • での ユーザーフォームの追加 a ラベル .
  • キャプション ラベル かわりに ローワーバウンド をプロパティに追加しました。

  • 追加 ラベル 名前付き アッパーバンド 小数点以下の桁数 .

  • を追加します。 3つのテキストボックス において ユーザーフォーム .

  • 現段階では つける a コマンドボタン と名付ける。 生成する .

  • 今すぐ ダブルクリック その コマンドボタン を置き、次のようにします。 コード において コードエディタ .
 Private Sub CommandButton1_Click() Dim lowerbound As Integer Dim upperbound As Integer Dim decimalPlaces As Integer lowerbound = Val(TextBox1.Text) upperbound = Val(TextBox2.Text) decimalPlaces = Val(TextBox3.Text) Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowbound, decimalPlaces) Do WhileApplication.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = randomNumber Next End Sub 

  • プレス F5 まで 走る その コード とのことです。 ユーザーフォーム 持つ 登場 .
  • を置く。 下方向 , 上巻 とのことです。 番号 小数点以下 において ユーザーフォーム を打ち込みます。 生成ボタン .

出力 : イン セルA1:B10 があります。 乱数20個 をもって 小数点以下2桁 において を1~30の範囲で設定します。

続きを読む エクセルで重複のない乱数を生成する方法(7つの方法)

覚えておきたいこと

  • を使うこともできます。 フィックス機能 の代わりに Int機能 まで 一意な整数を生成する .機能 除去 その ぶぶんひん 番号 と同じように Int機能 .

結論

さて、我々は適切な例の助けを借りて、ExcelのVBAを使用してユニークな乱数を生成する方法を知っています。 うまくいけば、それはあなたがより自信を持って機能を使用するのに役立ちます。 任意の質問や提案は、以下のコメントボックスにそれらを置くことを忘れないでください。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。