在SHEET1的A1里輸個10位數(shù),比如1234560000
然后想把所有4位的排列組合搞出來放在B列
用了段VBA代碼跑了一下:
vba
Public Sub aaa()
Dim Mstr1 As String, Mstr2 As String, MStr3 As String
n = 1
For i = 1 To 10
Mstr1 = Mid(Sheet1.Range(A1), i, 1)
For j = 1 To 10
If j <> i Then
Mstr2 = Mstr1 & Mid(Sheet1.Range(A1), j, 1)
For k = 1 To 10
If k <> j And k <> i Then
MStr3 = Mstr2 & Mid(Sheet1.Range(A1), k, 1)
For l = 1 To 10
If l <> k And l <> j And l <> i Then
Sheet1.Range(B & n) = MStr3 & Mid(Sheet1.Range(A1), l, 1)
n = n + 1
End If
Next
End If
Next
End If
Next
Next
Sheet1.Range(B1:B & Sheet1.Range(B30000).End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
結(jié)果去重后是1045種組合,不是210哈~
有重復(fù)數(shù)字的話排列數(shù)會少很多,畢竟不能算重復(fù)的嘛~
然后想把所有4位的排列組合搞出來放在B列
用了段VBA代碼跑了一下:
vba
Public Sub aaa()
Dim Mstr1 As String, Mstr2 As String, MStr3 As String
n = 1
For i = 1 To 10
Mstr1 = Mid(Sheet1.Range(A1), i, 1)
For j = 1 To 10
If j <> i Then
Mstr2 = Mstr1 & Mid(Sheet1.Range(A1), j, 1)
For k = 1 To 10
If k <> j And k <> i Then
MStr3 = Mstr2 & Mid(Sheet1.Range(A1), k, 1)
For l = 1 To 10
If l <> k And l <> j And l <> i Then
Sheet1.Range(B & n) = MStr3 & Mid(Sheet1.Range(A1), l, 1)
n = n + 1
End If
Next
End If
Next
End If
Next
Next
Sheet1.Range(B1:B & Sheet1.Range(B30000).End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
結(jié)果去重后是1045種組合,不是210哈~
有重復(fù)數(shù)字的話排列數(shù)會少很多,畢竟不能算重復(fù)的嘛~