Выход из цикла VBA с несколькими переменными

Как новичок в VBA (Excel), я пытаюсь создать инструмент, который определяет, каким должен быть диагностический результат определенного теста; чтобы быть экономически эффективным в качестве предварительного скрининга к другому диагностическому тесту.

Я хочу рассчитать определенную доходность теста А, при которой доходность теста Б затраты на диагностику одинаковы для обоих тестов. Код, который я написал, должен зацикливаться на определенном диапазоне для диагностического выхода и выходить из этого цикла, когда затраты на диагностику для теста A падают ниже затрат на диагностику для теста B.

Тем не менее, код продолжает цикл для этого диапазона, но не останавливается, когда мое условие о затратах выполняется. Я много пробовал, в том числе делать время и делать до утверждения, но это просто не сработает. Я действительно надеюсь, что кто-то может мне помочь! Спасибо заранее! Кирстен

Sub TGP_WES_OR_WES()
    Dim Yield_A As Double
    Dim Yield_B As Double
    Dim Yield_A_max As Double

    Dim Cost_diagnosis_A As Double
    Dim Cost_diagnosis_B As Double

    Yield_B = Range("C6")
    Yield_A_Max = Yield_B - 0.1

    Cost_diagnosis_B = Range("E15")
    Cost_diagnosis_A = Range("E11")

    Do While Yield_A < Yield_A_max
        For Yield_A = 1 To Yield_A_max Step 0.1
            Range("C5").Value = Yield_A
            If Cost_diagnosis_A < Cost_diagnosis_B Then
                Exit For
            End If
        Next Yield_TGP
    Loop

    Range("D1").Value = Yield_TGP
End Sub

1 ответ

У вас есть двойной цикл (оба из которых, кажется, делают одно и то же):

Do While Yield_A < Yield_A_max
    For Yield_A = 1 To Yield_A_max Step 0.1
        ...
    Next Yield_TGP
Loop

Удалить внешнюю do петля для начинающих.

Вторая проблема, которую я вижу, заключается в том, что ваши условия выхода из цикла не зависят от итерации цикла. Так сказать Cost_diagnosis_A а также Cost_diagnosis_B не обновляются и не изменяются циклом. Как правило, это указывает на ошибку проектирования, поскольку почти все условия завершения цикла будут зависеть от значения, которое цикл вычисляет или обновляет (или от общего хода цикла). Интуитивно, ваше условие завершения цикла должно включать Yield_A прямо или косвенно (из нижестоящего расчета). Возможно, вы хотите обновить значения Cost_diagnosis_A и / или Cost_diagnosis_B внутри вашего тела цикла, на основе Yield_A?

Другие вопросы по тегам