EXCEL中从11个数字选不同6数字的排列组合,但有这样的要求……
要求如下:6个数字随机平均分成三组后,组与组之间顺序不论,组内成员之间顺序不论,将这样的组合全部排出来。比如6个数字是123456,它们进行排列,(1,2)(3,4)(5...
要求如下:6个数字随机平均分成三组后,组与组之间顺序不论,组内成员之间顺序不论,将这样的组合全部排出来。
比如6个数字是123456,它们进行排列,(1,2)(3,4)(5,6)相同的组合不要:比如(21,34,56)或(65,43,12)等,
而另外的组合有(1,3)(2,4)(5,6)/(1,4)(3,2)(5,6)/(4,5)(3,4)(1,6)等,能否将这些想要的组合排出来呢? 展开
比如6个数字是123456,它们进行排列,(1,2)(3,4)(5,6)相同的组合不要:比如(21,34,56)或(65,43,12)等,
而另外的组合有(1,3)(2,4)(5,6)/(1,4)(3,2)(5,6)/(4,5)(3,4)(1,6)等,能否将这些想要的组合排出来呢? 展开
展开全部
COMBIN(6,2)=15
COMBIN(15,3)=455
有455个组合
要先全部列出,非VBA做不出来
VBA也是非常复杂了
COMBIN(15,3)=455
有455个组合
要先全部列出,非VBA做不出来
VBA也是非常复杂了
更多追问追答
追问
请问您能做出来吗?
追答
Sub test()
Dim j, k, l
Dim brr(1 To 1048576, 1 To 1)
Dim crr(1 To 1048576, 1 To 3)
For j = 1 To 5
For k = j + 1 To 6
brr(n + 1, 1) = "(" & j & "," & k & ")"
n = n + 1
Next
Next
[a1].Resize(UBound(brr), 1) = brr
arr = [a1].CurrentRegion
For i = 1 To UBound(arr) - 2
For ii = i + 1 To UBound(arr) - 1
For iii = ii + 1 To UBound(arr)
crr(M + 1, 1) = arr(i, 1)
crr(M + 1, 2) = arr(ii, 1)
crr(M + 1, 3) = arr(iii, 1)
M = M + 1
Next
Next
Next
[c1].Resize(UBound(crr), 3) = crr
End Sub
这个便是了
如果11个中随机6个算上 那数量是很可怕的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询