Я все еще пытаюсь справиться с VBA.Дублирующий код на основе значения ячейки
У меня есть следующий код, который по существу генерирует ряд номеров лотереи. В настоящее время он предоставляет мне 5 случайных чисел от 1-49 и 2 случайных числа от 1 до 10.
Мне нужно, чтобы значения были уникальными. Ни один из 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() не сделает каждый номер уникальным, не приведет ли он к таким же результатам? –