任意の数値間の値をランダムに並べる2010.06.10
任意の数値間の値を、重複がないようにランダムに並べるマクロです。発表順をランダムに決める等で利用できると思います。
【お薦め】マクロ・プロシージャを管理する無料のツール!
Excelマクロ管理ツール
Excelマクロ管理ツール
サンプルコード任意の数値間のランダムな整数値をすべて取得し書き出す
コードの貼り付け場所
・セル[A1]~[A…]に書き出します。
・紹介するコードは「1」~「40」までの整数値を重複がないようにランダムに書き出します。
Sub Rand_1() '任意の最小値と最大値間の値をランダムに表示する。 Const conMin As Long = 1 '最小値(最大値より小さな整数) Const conMax As Long = 40 '最大値(最小値より大きな整数) '-------------------------- Dim bolFlg() As Boolean, varData As Variant, c As Long, lngRnd As Long ReDim bolFlg(conMin To conMax), varData(1 To conMax - conMin + 1, 1 To 1) c = conMin Randomize Do lngRnd = Int((conMax - conMin + 1) * Rnd()) + conMin 'ランダム値取得 If bolFlg(lngRnd) = False Then 'ランダム値が初出なら処理を行う bolFlg(lngRnd) = True 'ランダム値既出フラグ varData(c - conMin + 1, 1) = lngRnd '配列にランダム値を代入 c = c + 1 End If Loop Until conMax < c Range(Cells(1, 1), Cells(conMax - conMin + 1, 1)).Value = varData End Sub
「最小値」 任意の数値間の最小値。最大値より小さな整数を設定します。
「最大値」 任意の数値間の最大値。最小値より大きな整数を設定します。
サンプルコード任意の数値間のランダムな整数値を一つ取得し書き出す
セル[A1]に、-10~10の間のランダムな整数値を書き出します。
Sub Get_Rnd() Const MinNum As Long = -10 '最小値 Const MaxNum As Long = 10 '最大値 Const conRange As String = "A1" '書き出しセル '--------------------------------------------------- If MaxNum < MinNum Then Exit Sub Randomize Range(conRange).Value = Int(Rnd() * (MaxNum - MinNum + 1) + MinNum) End Sub
「最小値」 任意の値の最小値。最大値より小さな整数を設定します。
「最大値」 任意の値の最大値。最小値より大きな整数を設定します。
「書き出しセル」 結果を書き出すセル
マイナスの値の設定も可能です。
最小値が最大値より大きい場合は、このコードは実行されません。