Sub Main()
Dim aSo, aKT, stt() As String, stt2() As String, Res() As String
Dim i&, i2&, i3&, k&, j&, sR&, sR2&
Const N& = 10 ^ 6
aSo = Array(, "2", "3", "4", "5", "6", "7", "9")
aKT = Array(, "A", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", _
"N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
stt = CH_L(aSo, 3)
sR = UBound(stt)
stt2 = CH_L(aKT, 4)
sR2 = UBound(stt2)
ReDim Res(1 To N, 1 To 10)
j = 1
For i = 1 To sR
For i2 = 1 To sR2
For i3 = 1 To sR
If k = N Then k = 1: j = j + 1 Else k = k + 1
If j = 11 Then
Range("B2").Resize(N, 10) = Res
Exit Sub
End If
Res(k, j) = stt(i, 1) & stt2(i2, 1) & stt(i3, 1)
Next i3
Next i2
Next i
End Sub
Private Function CH_L(ByVal Arr As Variant, ByVal k&) As Variant
Dim Res() As String, M&, i&, r&, j&, sRow&
M = UBound(Arr)
ReDim Res(1 To M ^ k, 1 To 1)
sRow = 1: r = 1
Res(r, 1) = String(k, Arr(1))
For N = k To 1 Step -1
For j = 2 To M
For i = 1 To sRow
tmp = Res(i, 1)
Mid(tmp, N, 1) = Arr(j)
r = r + 1
Res(r, 1) = tmp
Next i
Next j
sRow = M * sRow
Next N
CH_L = Res
End Function