|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
Option Explicit
Sub test()
Dim i&, dr(), er(), vResult(), t#, r&
t = Timer
ReDim dr(1 To 20)
For i = 1 To UBound(dr): dr(i) = i: Next
ReDim er(1 To 3)
ReDim vResult(1 To WorksheetFunction.Combin(UBound(dr), 3), 1 To 3)
combinArr dr, er, vResult, 3, r
[E1].CurrentRegion.Clear
With [E1].Resize(UBound(vResult), 3)
.Value = vResult
.EntireColumn.AutoFit
End With
MsgBox "执行完毕!_用时: " & Format(Timer - t, "0.00") & " 秒,共发现 " & UBound(vResult) & " 组组合", 64
End Sub
Function combinArr(ByRef ar(), ByRef br(), ByRef cr(), ByVal n&, Optional _
ByRef iGroup&, Optional ByVal iStart&, Optional ByVal iNum& = 1)
Dim i&, j&
For i = iStart + 1 To UBound(ar) - n + iNum
If iNum < n Then
br(iNum) = ar(i)
Call combinArr(ar, br, cr, n, iGroup, i, iNum + 1)
Else
br(iNum) = ar(i)
iGroup = iGroup + 1
For j = 1 To n
cr(iGroup, j) = br(j)
Next
End If
Next
End Function
|
评分
-
1
查看全部评分
-
|