여기에 두 번의 반복을 만들려고합니다. 첫 번째 부분은 "For i = 1 to iterations"입니다. 두 번째 부분은 1에서 731까지의 "j"입니다.두 개의 Do While 루프를 함께 연결하는 방법?
코드에서 P1, P2, P3은 상수이고 Discrete1, Discrete2, Discrete3은 함수이지만 무작위로 정수를 반환합니다.
VBA에서 코드를 실행할 수는 있지만 몇 가지 이유로 인해 결과가 잘못 반환됩니다.
달성하고자하는 것은 j가 266보다 작 으면 첫 번째 루프가 진행되고 j가 360-731 사이 일 때 두 번째 루프가 진행됩니다.
누구든지 도움을받을 수 있습니까? 나는 많이 감사 할 것입니다.
주셔서 감사합니다 설명과 일치하지 않는 코드에서
For i = 1 To Iteration: Cells(4, 3) = i
Do While j < 366
If IIf(Rnd() < P1, 1, 0) = 1 Then
RestorationDay1 = Discrete1
ElseIf IIf(Rnd() < P2, 1, 0) = 1 Then
RestorationDay1 = Discrete2
ElseIf IIf(Rnd() < P3, 1, 0) = 1 Then
RestorationDay1 = Discrete3
Else
RestorationDay1 = 0
End If
Sumunavailableday1 = Sumunavailableday1 + RestorationDay1
unAvailability1 = Sumunavailableday1/365
Availability1 = 1 - unAvailability1
Cells(4, 8) = j
Cells(4, 9) = Availability1
Cells(4, 10) = unAvailability1
Cells(4, 11) = Sumunavailableday1
j = j + RestorationDay1 + 1
Loop
Do While 365 < j < 731
If IIf(Rnd() < P1, 1, 0) = 1 Then
RestorationDay2 = Discrete1
ElseIf IIf(Rnd() < P2, 1, 0) = 1 Then
RestorationDay2 = Discrete2
ElseIf IIf(Rnd() < P3, 1, 0) = 1 Then
RestorationDay2 = Discrete3
Else
RestorationDay2 = 0
End If
Sumunavailableday2 = Sumunavailableday2 + RestorationDay2
unAvailability2 = Sumunavailableday2/365
Availability2 = 1 - unAvailability2
Cells(5, 8) = j
Cells(5, 9) = Availability2
Cells(5, 10) = unAvailability2
Cells(5, 11) = Sumunavailableday2
j = j + RestorationDay2 + 1
Loop
Next i
대단히 감사합니다. 토마스, 나는 당신의 첫 번째 제안을 시도했다. 그것은 작동합니다. 귀하의 두 번째 제안을 다시 : 나는 당신과 동의 하겠지만, Rnd()> = P1 훨씬 쉬울 것입니다. 그러나 두 가지 방법이 실제로 무작위가 아니므로 추가 함수 Rnd()를 사용하여 Rnd()를 대체하는 다른 함수를 사용하기로 결정했습니다. –
두 개의 새로운 루프에 대해서는 VBA가 아직 완전히 새로운 것이기 때문에 기능의 의미를 완전히 이해하지 못해서 그것에 대해 생각할 것입니다. 나는 계속 진행하고 후속 작업을 수행 할 것입니다. 다시 한 번 감사드립니다! :) –