我仍然試圖去掌握VBA。基於單元格值的代碼複製
我有下面的代碼,基本上會產生一排彩票號碼。 目前它爲我提供了1-49的5個隨機數和1-10的2個隨機數。
我需要它使值唯一,即沒有5可以是重複的,2不能是彼此相同的。
此外,如果我要在單元格「A1」中有多少行,你想在「E1」中輸入一個數字,我如何生成「E1」中所述的行數?
Sub Lotto()
Application.ScreenUpdating = False
Dim I, choose, numbers(49) As Integer
Range("G2").Select
For I = 1 To 49
numbers(I) = I
Next
Randomize Timer
For I = 1 To 5
choose = 1 + Application.Round(Rnd * (49 - I), 0)
ActiveCell.Offset(0, I - 1).Value = numbers(choose)
numbers(choose) = numbers(40 - I)
Next
ActiveCell.Range("A2:N2").Select
Selection.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=True, Orientation:= _
xlLeftToRight
Range("a3").Select
ActiveCell.Select
Range("M2").Select
For J = 1 To 10
numbers(J) = J
Next
Randomize Timer
For J = 1 To 2
choose = 1 + Application.Round(Rnd * (10 - J), 0)
ActiveCell.Offset(0, J - 1).Value = numbers(choose)
numbers(choose) = numbers(10 - J)
Next
ActiveCell.Range("M2:N2").Select
Selection.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=True, Orientation:= _
xlLeftToRight
Range("a4").Select
ActiveCell.Select
Application.ScreenUpdating = False
End Sub
總結循環的'if'內檢查數量已經生成? – findwindow
使用randbetween()函數也可以完成這項工作,不需要使用任何循環或任何東西 –
雖然在randbetween()中添加不會使每個數字都是唯一的,那麼它會不會返回相同的結果? –