一意の乱数のリストを生成する場合は、RANDBETWEEN関数とVBARNDを使用できます。この記事では、提供されたリストから3つの一意の番号を生成します。

元の質問を見つけることができますhttp://www.excelforum.com/excel-programming-vba-macros/1093315-vba-for-do-while-loop.html [ここ]

質問:A列に保存されている数値のリストから3つの乱数のリストを生成するマクロが必要です。VBAコードを処理する必要があるという条件があります。条件は、列Bに3つの番号が存在するため、マクロは列Bに一度も発生していない番号のリストを作成する必要があります。このようにして、列BとCに一意の番号のリストを作成できます。 ||||以下は、私たちが持っている例のスナップショットです:

img1

===

一意の乱数のリストを取得するには; VBエディターを起動するには、以下の手順に従う必要があります。[開発者]タブをクリックします。[コード]グループから[VisualBasic]を選択します

  • 以下のコードを標準モジュールにコピーします

img2

マクロを実行するには、Visual Basic Editorの画面でアクティブになっている場合、キーボードからF5キーを押すことができます。マクロを実行する別の方法は、「ALT + F8」キーを使用することです。マクロを選択し、[実行]ボタンをクリックします

Sub RandomNumbers()

Dim ws As Worksheet

Dim ar As Variant

Dim RandomNum As Long

Dim i As Integer

Dim myVal As Long

Randomize

Set ws = ThisWorkbook.Sheets("Numbers")

With ws

ar = .Range("A" & Rows.Count).End(xlUp).Row

.Range("C1:C3").ClearContents

For i = 1 To 3

Do

RandomNum = Int((1 - ar + 1) * Rnd + ar)

myVal = .Range("A" & RandomNum).Value

Loop Until Range("B1:C24").Find(what:=myVal, lookat:=xlWhole) Is Nothing

.Range("C" & i).Value = myVal

Next i

End With

End Sub

img3

  • VBAコードを実行すると、番号の一意のリストが自動的に生成されます

img4

img5

コードの説明:

上記のコードでは、RND&INT関数とForループおよびDoループを使用して結果を取得します。

  • Dimwsをワークシートとして宣言します。 wsをワークシートとして宣言する目的は、特定のワークシートでのみコードを実行することです。つまり、

この例の数値DimRandomNum As Long:これにより一意の数値が保存されますSet ws = ThisWorkbook.Sheets( “Numbers”):この行は、コードが数値シートでのみ実行されるようにしますコードの次の行はWithステートメントar = .Range( “A”&Rows.Count).End(xlUp).Row:この行は、列Aの最後のセル(この例では24)を保存します

Range( “C1:C3″)。ClearContents:この行は範囲C1:C3の既存のコンテンツをすべて消去します次に、Do Loopを使用して1〜3回Forループを実行し、乱数のリストを生成して重複がないことを確認します既存の範囲、つまり列Bで結論:上記のVBAコードを微調整することで、MicrosoftExcelのリストから個別の乱数のリストを生成できます。

私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。

image 48

_私たちはあなたからの連絡をお待ちしております。私たちの仕事を改善、補完、または革新し、あなたのためにそれをより良くする方法を教えてください。 [email protected]_までご連絡ください