Ну, если вам нужны только цифры, случайное число от 0 до 9 может быть достигнуто с помощью Int(Rnd() * 10)
.
Int () округляется, Rnd () возвращает число от 0 до <1. <br>
Если вы затем зациклите это 8 раз и добавите числа после друг друга (с &
вместо +
) с If
проверкой последнего последнего добавленного значения к тому, которое мы хотим добавить, тогда у вас будет 8 цифр номер без повторяющихся чисел.
Тогда вам просто нужно распечатать или сохранить их где-нибудь.
Что-то вроде:
Sub random()
Dim test As Long, ran As Long, i As Long, j As Long
For j = 1 To 500 '- Amount of numbers to print
ran = 0
For i = 1 To 8 '- Length of random number
test = Int(Rnd() * 10)
If test = Right(ran, 1) Then
i = i - 1 '-Same number, try again
Else
ran = ran & test '-New number, add this
End If
Next i
Range("A" & Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row).Value = ran '- Print on last row of column "A"
Next j
Range("A:A").RemoveDuplicates Columns:=1 '- Remove duplicates from column "A"
End Sub
Затем будет напечатано 500 случайных 8-значных чисел, начиная с A2
, или последняя пустая ячейка в столбце A
. Затем приступите к удалению дубликатов.
Вы можете проверять наличие дубликатов каждый раз и, таким образом, удостовериться, что у вас действительно есть указанное количество чисел. Но он очень медленный, и шанс получить дубликат очень мал (тестовый прогон из 10.000 номеров имел для меня один дубликат).