トップ > 汎用コード > 任意の数値間の値をランダムに並べる

任意の数値間の値をランダムに並べる2010.06.10

任意の数値間の値を、重複がないようにランダムに並べるマクロです。発表順をランダムに決める等で利用できると思います。


【お薦め】マクロ・プロシージャを管理する無料のツール!
 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

「最小値」 任意の値の最小値。最大値より小さな整数を設定します。
「最大値」 任意の値の最大値。最小値より大きな整数を設定します。
「書き出しセル」 結果を書き出すセル
マイナスの値の設定も可能です。
最小値が最大値より大きい場合は、このコードは実行されません。


ページトップへ戻る

Excel 汎用コード

Copyright(C) 2009- 坂江 保 All Rights Reserved.