Excelについてです。 画像のエクセルのセルの白のところのみに乱数で数字を入れたいです。 条件が、 ①縦の列で数字が入っているセルを連続させたくない。 ②グレーのところには入れたくない
Excelについてです。 画像のエクセルのセルの白のところのみに乱数で数字を入れたいです。 条件が、 ①縦の列で数字が入っているセルを連続させたくない。 ②グレーのところには入れたくない ③上記のルールだと8個の数字を入れる入れ方が最大になるかと思いますが、数字を8個入れる場合、6個入れる場合、4個入れる場合等入れる数字の数も決められたらうれしいのですが・・・ このようなことはエクセルで可能でしょうか。 ①、②のみだったら可能、でも良いのでわかる方教えてください。 乱数の範囲は1~100で考えています。 よろしくお願いいたします。
Excel・127閲覧・100
ベストアンサー
設定する数字が1~100でランダムなのはいいのですが、表示するセルもランダム(NGのセルは決まっていますが)だとかなり複雑です。 表示するセルを先に決めていいなら、下記マクロで8個6個4個出来ました。 Sub test() Dim cnt As Variant Dim tbl(99) As Integer Dim i As Integer Dim rng As Range Dim ck As Boolean Dim no As Integer Dim rt8 As Variant, rt6 As Variant, rt4 As Variant rt8 = Array("D2", "D4", "D6", "E2", "E5", "F2", "F4", "F6") rt6 = Array("D2", "D5", "E3", "E6", "F3", "F6") rt4 = Array("D4", "E5", "F2", "F6") cnt = InputBox("設定個数を入力してください(8,6,4)") If StrPtr(cnt) = 0 Then Exit Sub If cnt = "" Then Exit Sub If cnt <> 8 And cnt <> 6 And cnt <> 4 Then MsgBox "入力値エラー" Exit Sub End If cnt = Val(cnt) Range("D2:F6").ClearContents For i = 0 To cnt - 1 ck = False Do Until ck = True Randomize no = Int(100 * Rnd + 1) If tbl(no - 1) = 0 Then tbl(no - 1) = 1 ck = True End If Loop If cnt = 8 Then Set rng = Range(rt8(i)) ElseIf cnt = 6 Then Set rng = Range(rt6(i)) Else Set rng = Range(rt4(i)) End If rng.Value = no Next i End Sub
1人がナイス!しています
ありがとうございます!入れる場所をランダムに決めるのは複雑なのですね・・・。でも一歩進めました。ありがとうございます!!!
質問者からのお礼コメント
すごく丁寧に答えていただき本当にありがとうございました。
お礼日時:5/21 22:44