電子書籍の厳選無料作品が豊富!

エクセルの乱数表について質問です。小文字a〜jの10個のサンプルを2個1組で5回に分けて20回ぶんの乱数表を作りたいのですがどうすればいいでしょうか。10個のサンプルが重複なしであれば表記の仕方は特にこだわりはありません。

例えば、、
①ab cd ef gh ij(重複なし)
②bc ef ag hj id(重複なし)
・・・

A 回答 (1件)

以下のマクロを標準モジュールに登録してください。


-----------------------------------------------------------
Option Explicit

Dim arr As Variant 'a,b,c,d,f,f,g,h,i,jの配列

Public Sub 組み合わせ作成()
Randomize '乱数初期化
'a~jの文字を格納
arr = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j")
Dim i As Long
'20回ぶんの組み合わせを作成
For i = 1 To 20
Call Kumiawase(i)
Next
End Sub

'1回ぶんの組み合わせを作成
Private Sub Kumiawase(row As Long)
Dim i As Long
Dim j As Long
Dim n As Long
Dim idx(9) As Long
Dim flg(9) As Boolean
Dim getFlag As Boolean
'フラグ初期化
For i = 0 To 9
flg(i) = False '未使用
Next
For i = 0 To 9
getFlag = False
Do
n = Int(Rnd() * 10) '0~9の整数を取得
'取得した値が0~9の範囲で且つ未使用ならそれを採用
If n >= 0 And n < 10 And flg(n) = False Then
idx(i) = n 'その整数を採用
flg(n) = True '使用済みに設定
getFlag = True 'do-loopの終了
End If
Loop While (getFlag = False)
Next
Cells(row, 1).Value = row '連番設定
'2~5列に組み合わせ文字を設定
For i = 1 To 5
j = (i - 1) * 2
'組み合わせの2文字設定
Cells(row, i + 1).Value = arr(idx(j)) & arr(idx(j + 1))
Next
End Sub
-----------------------------------------------------------
マクロ:組み合わせ作成
を実行すると、添付の図のように
今、表示されているシートに20回分の組み合わせが表示されます。
(データが何もない空のシートで行ってください)
尚、1つの組み合わせは、文字が昇順になるようには表示していません。
例 a,jを表示するとき ajの場合もありますしjaの場合もあります。
再度、マクロを実行すると、20回分の別な組み合わせが表示されます。
「エクセルの乱数表について質問です。小文字」の回答画像1
    • good
    • 0
この回答へのお礼

凄い、、、やってみます!
詳しくありがとうございます!!

お礼日時:2016/11/28 10:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!