| 
    
     |  | ▼ogi さん: 
 こんにちは、やりたいことが良く分かりませんがこんなことでしょうか?
 ただし全てをランダムでと言うのはいかがなものかと感じます。
 基本動作があっていれば条件を追加して応用してみてください。
 ※IF文を使わなかったので面倒くさいことになっているかもしれません。
 
 Sub test()
 Dim Data(2, 10) As Variant  '参照データ用
 Dim dat(2, 3, 2) As Variant '制御用
 Dim SetD(10) As Variant, TmpD As Variant '参照場所決定用
 Dim i As Integer, j As Integer, k As Integer, m As Integer
 Dim Gr As Integer, Cl As Integer, XX As Integer '複数表作成用
 
 Randomize
 
 '第1グループの分割
 dat(1, 1, 1) = 6
 dat(1, 2, 1) = 4
 '第2グループの分割
 dat(2, 1, 1) = 5
 dat(2, 2, 1) = 3
 dat(2, 3, 1) = 2
 
 '第1グループの要素
 dat(1, 1, 2) = "田中" '4
 dat(1, 2, 2) = "鈴木" '3
 '第2グループの要素
 dat(2, 1, 2) = "橋本" '2
 dat(2, 2, 2) = "山田" '1
 dat(2, 3, 2) = "加藤" '0
 
 '各グループの要素の格納
 For i = 1 To 2
 m = 0
 For j = 1 To 3
 For k = 1 To dat(i, j, 1)
 m = m + 1
 Data(i, m) = dat(i, j, 2)
 Next k
 Next j
 Next i
 
 For i = 1 To 10
 SetD(i) = i
 Next i
 
 For Gr = 0 To 3
 For Cl = 0 To 5
 XX = Cl Mod 2 + 1
 TmpD = SetD
 j = 10
 For i = 1 To 10
 k = Int(Rnd * j) + 1
 Cells(i + 1, Gr * 8 + Cl + 1).Value = Data(XX, TmpD(k))
 For m = k To j - 1
 TmpD(m) = TmpD(m + 1)
 Next m
 j = j - 1
 Next i
 Next Cl
 Next Gr
 End Sub
 
 |  |