Ho una quantità "X" di variabili (con probabilità compresa tra 3 e 20 opzioni), che verranno combinate per calcolare tutte le combinazioni possibili per soddisfare un criterio. Per ogni variabile extra viene introdotto un ciclo aggiuntivo, tuttavia non so se sia possibile rendere dinamica la creazione di loop (in Excel VBA, il codice non deve essere molto veloce).Aggiunta dinamica di anelli nidificati
Per dimostrare: Ho var. A con h = 2, var. B con h = 3. Mi piacerebbe conoscere tutte le combinazioni che sono uguali a 10 o la migliore combinazione delle 2 variabili.
In questo caso: opzione 1 = 5 * A = 10, 3 * B = 9,2 * A e 2 * B = 10, 3 * A e 1 * B = 9.
L'aspetto codice in questo modo:
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
Se viene introdotto un altro parametro (per esempio C = 4), il codice è:
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
In altre parole, vorrei sapere se è possibile traslare la pseudocodice al codice reale:
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
Vorrei che il down-put si sarebbe spiegato. – RubberDuck
Caro RubberDuck, grazie per la tua risposta veloce e chiara. È una soluzione molto pulita, tuttavia penso che non possa essere adattata alle mie esigenze. Questo perché voglio conoscere tutte le possibili combinazioni di parametri (compresa una moltiplicazione) per affrontare al meglio i criteri <10. Qui è dove entra in h_test = loop1 * parametro1 + loop2 * parametro2 .... + loopX * parametro X La tua funzione SUM può solo trovare la somma senza le moltiplicazioni e non sono sicuro se sia possibile adattarla alle mie esigenze (la formula h_test). –
Paul, non ho intenzione di scrivere il codice per te, ma puoi sicuramente usare questo approccio alla domanda che hai posto. Se non puoi, la tua domanda non è una rappresentazione accurata del tuo codice reale. – RubberDuck