Я бы сделал что-то вроде:
Количество опций - 6 ^ 7, так что будет много случаев: 279936 Чтобы получить все это, вы должны просмотреть их.Сначала мы должны найти все варианты.Чтобы сгенерировать все возможные комбинации, включая дубликаты, проблема та же, что и получить все 7-значные цифры мая в базе 6 (так как у нас есть 6 цифр в каждом столбце)
в более новых случаях, вы можете использовать BASEФункционально, но если вы не можете получить к нему доступ, вы можете использовать это: если вы можете немного изменить код, вы можете вызвать значение исходной таблицы вместо цифр 0-5.
Затем просто удалите дубликаты.
Sub generateAllBase6()
Dim i As Double 'number tries
Dim n As String ' the number of item from the column 1-7
For i = 0 To 279936 - 1
n = ConvertBase10(i, "012345")
For k = 1 To 7
If Len(n) < k Then
Cells(i + 2, k) = 0
Else
Cells(i + 2, k) = Right(Left(n, k), 1)
End If
Next k
Next i
End Sub
Public Function ConvertBase10(ByVal d As Double, ByVal sNewBaseDigits As String) As String
Dim S As String, tmp As Double, i As Integer, lastI As Integer
Dim BaseSize As Integer
BaseSize = Len(sNewBaseDigits)
Do While Val(d) <> 0
tmp = d
i = 0
Do While tmp >= BaseSize
i = i + 1
tmp = tmp / BaseSize
Loop
If i <> lastI - 1 And lastI <> 0 Then S = S & String(lastI - i - 1, Left(sNewBaseDigits, 1)) 'get the zero digits inside the number
tmp = Int(tmp) 'truncate decimals
S = S + Mid(sNewBaseDigits, tmp + 1, 1)
d = d - tmp * (BaseSize ^ i)
lastI = i
Loop
S = S & String(i, Left(sNewBaseDigits, 1)) 'get the zero digits at the end of the number
ConvertBase10 = S
End Function
Я нашел здесь функцию: http://www.freevbcode.com/ShowCode.asp?ID=6604