Try this ...
Public Sub Random6()
Dim MyDictionary As Object
Dim i As Long, j As Long, K As Long, Str As String
Dim Temp1 As String, Temp2 As String
Dim Num1 As Integer, Num2 As Integer
Dim Random As Double
Dim Arr(1 To 750000, 1 To 1)
Temp1 = "23456789"
Temp2 = "ABCDEFGHJKLMNPQRSTUVWXYZ"
Set MyDictionary = CreateObject("Scripting.Dictionary")
Randomize
For i = 1 To 750000
AA:
Str = ""
Num1 = 0
Num2 = 0
For j = 1 To 6
If Num1 < 3 And Num2 < 3 Then
Random = Rnd()
If Random < 0.5 Then
Num1 = Num1 + 1
K = Int(Rnd() * 8) + 1
Str = Str & Mid(Temp1, K, 1)
Else
Num2 = Num2 + 1
K = Int(Rnd() * 24) + 1
Str = Str & Mid(Temp2, K, 1)
End If
ElseIf Num1 < 3 Then
Num1 = Num1 + 1
K = Int(Rnd() * 8) + 1
Str = Str & Mid(Temp1, K, 1)
Else
Num2 = Num2 + 1
K = Int(Rnd() * 24) + 1
Str = Str & Mid(Temp2, K, 1)
End If
Next j
If Not MyDictionary.Exists(Str) Then
MyDictionary.Add Str, ""
Arr(i, 1) = Str
Else
GoTo AA
End If
Next i
Range("A2").Resize(750000, 1) = Arr
End Sub
Bookmarks