|
ランダムに数字を振り分けて、各列で指定のそれぞれの数字の数を指定して振り分けたいのですが、下記のようなバラバラに振り分けるのではなくA列の3・4を3を4つ、4を3つという感じに条件付けたいんですが可能でしょうか?
A B C D E F
3 1 3 0 4 0
3 2 3 1 3 1
3 2 3 2 4 2
3 0 3 1 4 1
4 1 3 0 4 1
3 1 3 1 3 1
4 1 3 0 3 0
因みに、勤務表を自動で作成するのが最終目的です。
自分で作成したのを載せておきます。
----------------------------------------------------
Sub サンプル()
Dim intMax As Integer
Dim intMin As Integer
Dim i As Integer
Dim k As Integer
intMax = 4
intMin = 3
Randomize
For i = 1 To 10
For k = 0 To 4 Step 2
For R = 7 To 12 Step 2
For t = 15 To 20 Step 2
For s = 23 To 28 Step 2
Cells(i + 1, k + 1) = Int((intMax - intMin + 1) * Rnd + intMin)
Cells(i + 1, R + 1) = Int((intMax - intMin + 1) * Rnd + intMin)
Cells(i + 1, t + 1) = Int((intMax - intMin + 1) * Rnd + intMin)
Cells(i + 1, s + 1) = Int((intMax - intMin + 1) * Rnd + intMin)
Next s
Next t
Next R
Next k
Next i
intMax = 2
intMin = 0
Randomize
For i = 1 To 10
For k = 1 To 5 Step 2
For R = 8 To 13 Step 2
For t = 16 To 21 Step 2
For s = 24 To 29 Step 2
Cells(i + 1, k + 1) = Int((intMax - intMin + 1) * Rnd + intMin)
Cells(i + 1, R + 1) = Int((intMax - intMin + 1) * Rnd + intMin)
Cells(i + 1, t + 1) = Int((intMax - intMin + 1) * Rnd + intMin)
Cells(i + 1, s + 1) = Int((intMax - intMin + 1) * Rnd + intMin)
Next s
Next t
Next R
Next k
Next i
End Sub
-------------------------------------------------
もっとスマートなのがあれば手直しお願いいたします。
|
|