Mam "X" ilość zmiennych (prawdopodobnie od 3 do 20 opcji), które zostaną połączone, aby obliczyć wszystkie możliwe kombinacje, aby spełnić kryteria. Dla każdej dodatkowej zmiennej wprowadzana jest dodatkowa pętla, jednak nie wiem, czy możliwe jest utworzenie dynamicznych pętli (w Excelu kod nie musi być bardzo szybki).Dynamiczne dodawanie pętli zagnieżdżonych
Aby zademonstrować: Mam var. A z h = 2, var. B z h = 3. Chciałbym znać wszystkie kombinacje, które są równe 10 lub najlepszą kombinację dwóch zmiennych.
W tym przypadku: opcję 1 = 5 * A = 10, 3 * B = 9,2 * a a 2 * B = 10, 3 i 1 * a * b = 9
Wygląda kod tak:
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
Jeśli inny parametr jest wprowadzony (na przykład C = 4), kod jest:
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
innymi słowy, chciałbym wiedzieć, czy możliwe jest, aby przetłumaczyć pseudokod do rzeczywistego kodu:
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
Żałuję, że osoba zainteresowana nie wytłumaczyłaby się sama. – RubberDuck
Drogi RubberDuck, dziękuję za szybką i jasną odpowiedź. Jest to bardzo czyste rozwiązanie, jednak myślę, że nie można go dostosować do moich potrzeb. Dzieje się tak dlatego, że chcę znać wszystkie możliwe kombinacje parametrów (w tym mnożenie), aby najlepiej podejść do kryteriów <10. Tutaj h_test = loop1 * parameter1 + loop2 * parameter2 .... + loopX * parametr X nadchodzi Twoja funkcja SUM może znaleźć tylko sumę bez multiplikacji i nie jestem pewna, czy można to dostosować do moich potrzeb (formuła h_test). –
Paul, nie zamierzam napisać kodu dla ciebie, ale z całą pewnością możesz użyć tego podejścia, biorąc pod uwagę pytanie, które zadałeś. Jeśli nie możesz, twoje pytanie nie jest dokładną reprezentacją twojego prawdziwego kodu. – RubberDuck