重複しないランダムな数値を得る方法:Excel VBA入門 |
スポンサードリンク | |
Sub rnsuu01() Dim i As Long Dim x() Dim y() Dim d '---開始値Ldと終了値Udを定数で指定 Const Ld = 1 Const Ud = 10 '----使用する配列を準備する ReDim x(1 To Ud - Ld + 1) ReDim y(1 To Ud - Ld + 1) ReDim d(1 To Ud - Ld + 1, 1 To 1) Randomize '----乱数と値を配列にセットする For i = 1 To Ud - Ld + 1 x(i) = Rnd() y(i) = i + Ld - 1 Next i '----値を取り出す For i = 1 To Ud - Ld + 1 d(i, 1) = y(Application.Match(Application.Small(x, i), x, 0)) Next i Range("B:B").ClearContents Range("B1").Resize(UBound(d), 1) = d End Sub |
Sub rnsuu02() Dim i As Long Dim j As Long Dim k As Long Dim temp As Single Dim temp2 As Long '---開始値Ldと終了値Udを定数で指定 Const Ld = 1 Const Ud = 10 '----使用する配列を準備する ReDim x(1 To Ud - Ld + 1) As Single ReDim y(1 To Ud - Ld + 1, 1 To 1) Randomize '----乱数と値を配列にセットする For i = 1 To Ud - Ld + 1 x(i) = Rnd y(i, 1) = i + Ld - 1 Next i '----バブルソートで並べ替える For i = Ud - Ld To 1 Step -1 For j = 1 To i k = j + 1 If x(j) > x(k) Then temp = x(j) x(j) = x(k) x(k) = temp temp2 = y(j, 1) y(j, 1) = y(k, 1) y(k, 1) = temp2 End If Next j Next i Range("B:B").ClearContents Range("B1").Resize(UBound(y), 1) = y End Sub |
Sub rnsuu03() Dim i As Long Dim x() Dim y() Dim d '---開始値Ldと終了値Udを定数で指定 Const Ld = 1 '----開始値 Const Ud = 20 '----終了値 Const Pd = 10 '----取り出す個数 '----使用する配列を準備する ReDim x(1 To Ud - Ld + 1) ReDim y(1 To Ud - Ld + 1) ReDim d(1 To Ud - Ld + 1, 1 To 1) Randomize '----乱数と値を配列にセットする For i = 1 To Ud - Ld + 1 x(i) = Rnd() y(i) = i + Ld - 1 Next i '----値を取り出す For i = 1 To Ud - Ld + 1 d(i, 1) = y(Application.Match(Application.Small(x, i), x, 0)) Next i Range("C:C").ClearContents For i = 1 To Pd Range("C" & i).Value = d(i, 1) Next i End Sub |
スポンサードリンク
PageViewCounter
Since2006/2/27