Ich habe eine 'X' Anzahl von Variablen (wahrscheinlich zwischen 3 bis 20 Optionen), die kombiniert werden, um alle möglichen Kombinationen zu berechnen, um ein Kriterium zu erfüllen. Für jede zusätzliche Variable wird eine zusätzliche Schleife eingeführt, aber ich weiß nicht, ob es möglich ist, die Erstellung von Schleifen dynamisch zu machen (in Excel VBA muss der Code nicht sehr schnell sein).Dynamisches Hinzufügen von verschachtelten Schleifen
Um zu demonstrieren: Ich habe var. A mit h = 2, var. B mit h = 3. Ich möchte alle Kombinationen kennen, die 10 oder die beste Kombination der 2 Variablen sind.
In diesem Fall: Option 1 = 5 * A = 10, B = 3 * 9,2 * A 2 * und B = 10, 3 * und A * B 1 = 9.
Der Code sieht dies wie:
For A = 0 to 5
h = 0 'Reset previous h if solution is found
For B = 0 to 5
h_test = A * height(A) + B * heigth(B)
if h_test > 10
if h = 0 then
exit for
else
write h
exit for
end if
h = h_test
Next B
Next A
wenn ein anderer Parameter (zB C = 4) eingeführt wird, ist der Code:
For A = 0 to 5
h = 0 'Reset previous h if solution is found
For B = 0 to 5
h = 0 'Reset previous h if solution is found
For C = 0 to 5
h_test = A * height(A) + B * heigth(B) + C * heigth(C)
if h_test > 10
if h = 0 then
exit for
else
write h
exit for
end if
h = h_test
Next C
Next B
Next A
Mit anderen Worten, ich würde gerne wissen, ob es möglich ist, das übersetzen Pseudocode zu realem Code:
For #parameter. = X
For loop1 = 1 to 5
h = 0
For loop2 = 1 to 5
h = 0
....
For loopX = 1 to 5
h_test = loop1 *parameter1 + loop2 * parameter 2 ...
+ loopX * parameter X
If h_test > 10
Somecode
exit for
End if
Next X
...
Next loop2
Next loop1
Ich wünschte, der Downvoter hätte sich selbst erklärt. – RubberDuck
Hallo RubberDuck, danke für deine schnelle und klare Antwort. Es ist eine sehr saubere Lösung, aber ich denke, es kann nicht an meine Bedürfnisse angepasst werden. Dies liegt daran, dass ich alle möglichen Kombinationen von Parametern (einschließlich einer Multiplikation) kennen möchte, um die Kriterien <10 am besten zu erreichen. Hier kommt h_test = loop1 * parameter1 + loop2 * parameter2 .... + loopX * Parameter X ins Spiel Ihre Funktion SUM kann nur die Summe ohne die Multiplikationen finden, und ich bin mir nicht sicher, ob es möglich ist, dies an meine Bedürfnisse anzupassen (die h_test-Formel). –
Paul, ich werde den Code nicht für Sie schreiben, aber Sie können diesen Ansatz sicherlich verwenden, wenn Sie die Frage stellen, die Sie gestellt haben. Wenn dies nicht möglich ist, ist Ihre Frage keine genaue Darstellung Ihres echten Codes. – RubberDuck