大家好, 本人小白一枚。网上求得上述“给定一列数字得全排列”VBA代码: 1、该代码内容如下: Option Explicit Dim k As Long Sub test() Dim arr(8), i As Byte, t k = 0 t = Timer For i = 0 To 8 arr(i) = i + 1 Next Solver arr, 0, 9 Debug.Print Timer - t End Sub Function Solver(arr(), m As Byte, n As Byte) Dim i As Byte, t As Byte If m < n - 1 Then Solver arr, m + 1, n For i = m + 1 To n - 1 t = arr(m): arr(m) = arr(i): arr(i) = t Solver arr, m + 1, n t = arr(m): arr(m) = arr(i): arr(i) = t Next Else k = k + 1 Cells(k, 1).Resize(, 9) = arr End If End Function 2、该代码生成的结果格式: 详见图片 3、问题: 因为excel最多104万行,示例是9个元素,全排列30万+,所以能够生成全部排列。 但是对于10个元素以上的数列,全排列数近300万,此时生成的全排列显示不全。有没有合适的VBA代码可以加入其中,实现自动更换列,继续生成排列?请求大神的指导!
注:具体情况也可看附件!
|