Rnd()

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

 席替えの時や、クジを作成する場合、任意の数値間の値をランダムに並べたい事があります。そのような時に利用できるコードを紹介します。


サンプルコード

・セル[A1]~[A…]に書き出します。
・紹介するコードは「1」「40」までの整数値をランダムに取得し、書き出します。

Sub Rand_1() '任意の最小値と最大値間の値をランダムに表示する。

    Const conMin As Long = 1    '最小値(1以上、最大値以下の整数)
    Const conMax As Long = 40   '最大値(1以上、最小値以上の整数)
    '--------------------------
    Dim lngRnd As Long
    Dim lngCount As Long
    Dim lngValue() As Long
    Dim bolFlg() As Boolean
    Dim varData As Variant

    Randomize
    lngCount = conMin
    ReDim bolFlg(conMin To conMax)
    ReDim lngValue(conMin To conMax)
    ReDim varData(conMin To conMax, 1 To 1)
    Do
        lngRnd = Int((conMax - conMin + 1) * Rnd()) + conMin '乱数取得
        If bolFlg(lngRnd) = False Then
            bolFlg(lngRnd) = True
            lngValue(lngCount) = lngRnd
            lngCount = lngCount + 1
            If conMax < lngCount Then Exit Do
        End If
    Loop
    For lngCount = conMin To conMax
        varData(lngCount, 1) = lngValue(lngCount)
    Next
    With Application
        .ScreenUpdating = False
        .Range(.Cells(1, 1), .Cells(conMax - conMin + 1, 1)).Value = varData
        .ScreenUpdating = True
    End With
End Sub

「最小値」・・・任意の数値間の最小値。「1」以上で、最大値以下の整数を設定します。
「最大値」・・・任意の数値間の最大値。「1」以上で、最小値以上の整数を設定します。


任意の数値間の値を取得する

 ただ単に、任意の数値間のランダムな整数値を取得する時に利用するコードです。

サンプルコード

・セル[A1]に、-10~10の間のランダムな整数値を書き出します。

Sub Get_Rnd()
    Const MaxNum As Long = 10 '最大値
    Const MinNum 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 Tips for Teachers

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