在234567这 六个数字中任意选五个数字组合,列出所有组合的可能性,希望在excel里列出,需要如何改操作?

如题,我问的是需要在excel里列出各个组合的操作方法!急求高手解答一下!

新建一个空白表格
按下ALT+F11,插入-模块,复制下面代码到代码框中.按下F5运行.
这样A1:A720就是6个数字的组合.

Sub order()
Range("a1").Select
For a = 2 To 7
For b = 2 To 7
For c = 2 To 7
For d = 2 To 7
For e = 2 To 7
If a <> b And a <> c And a <> d And a <> e And b <> c And b <> d And b <> e And c <> d And c <> e And d <> e Then
ActiveCell.Value = a & b & c & d & e
ActiveCell.Offset(1, 0).Select
End If
Next
Next
Next
Next
Next
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-14
楼上可能理解错误,要求是六个数字中任意选五个数字组合.实际组合有120个.下面代码能实现这个要求:
Sub Filter()
Dim sInput As String, Arr()
Dim a As String, i&, c%, j%, r%, n&, m&, d&, e&
[a:a] = ""
Application.ScreenUpdating = False
a = 234567
sInput = InputBox("请在【" & a & "】六个数字中任意选五个数字:", "数字组合", "")
If Len(Trim(sInput)) = 5 Then
ReDim Arr(1 To 5)
For i = 1 To 5
Cells(i, 1) = Mid(sInput, i, 1)
Next
For i = 1 To 5
n = n & Application.Small(Range("a1:a5"), i)
m = m & Application.Large(Range("a1:a5"), i)
Next
For i = 1 To 6
If InStr(sInput, Mid(a, i, 1)) = 0 Then
c = Mid(a, i, 1)
End If
Next
For i = n To m
For r = 1 To 5
If InStr(sInput, Mid(i, r, 1)) > 0 Then
e = e + 1
If InStr(i, Mid(sInput, r, 1)) = InStrRev(i, Mid(sInput, r, 1)) Then
d = d + 1
End If
End If
Next
If InStr(i, c) = 0 And d = 5 And e = 5 Then
j = j + 1
Cells(j, 1) = i
End If
e = 0: d = 0
Next
End If
MsgBox "数字【" & sInput & "】共有组合【" & j & "】种!"
Application.ScreenUpdating = True
End Sub
第2个回答  2010-08-15
“组合”和“排列”是两个不同的概念,如果是“组合”,“六个数中任选五个”的意思与“六个数中任意去掉一个数”是相同的,因为只有六个数,所以去掉一个数的情况只有六种,即:34567、24567、23567、23467、23457、23456
第3个回答  2010-08-14
组合只有6种。
34567 24567 23567 23467 23457 23456
排列就多一些。 一楼的程序正确。