紳士!在列出所有可能的組合時,我無法找出將元素數量定義為變數的方法。我有一個硬編碼示例,其中元素數 = 3
'Declare variables
Dim a as long
Dim b as Long
Dim C as Long
Dim ElementsArray as variant
'Array
ElementsArray = array("1400","1900","2400")
'Loop through combinations
for a = lbound(ElementsArray) to ubound(ElementsArray)
for B= lbound(ElementsArray) to ubound(ElementsArray)
for c = lbound(ElementsArray) to ubound(ElementsArray)
debug.print(ElementsArray(a) & " - " & ElementsArray(b) & " - " & ElementsArray(c))
next c
next b
next a
但我正在尋找的是一個代碼,其中嵌套的 For 回圈的數量可能是一個變數,或者是一些其他方式來排列所有可能的組合。請幫助解決這個問題。
uj5u.com熱心網友回復:
這是遞回實作的示例。請注意,您不應該使陣列太大,因為您將獲得 n 的 n 個解決方案的冪 - 對于 4 個元素,即 256,對于 5 個元素,3'125,對于 6,您將獲得 46'656,對于 7 823'543 - 如果程式需要很長時間才能執行,請不要抱怨。當然,您需要一種方法來處理每個排列。
Option Explicit
Sub test()
Dim ElementsArray As Variant
ElementsArray = Array("1400", "1900", "2400")
ReDim SolutionArray(LBound(ElementsArray) To UBound(ElementsArray))
recursion ElementsArray, SolutionArray, LBound(ElementsArray)
End Sub
Sub recursion(elements, solution, level As Long)
Dim i As Long
For i = LBound(elements) To UBound(elements)
solution(level) = elements(i)
If level = UBound(elements) Then
Debug.Print Join(solution, " - ")
Else
recursion elements, solution, level 1
End If
Next i
End Sub
更新:這是結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/521942.html
標籤:vbafor循环排列
