Я запускаю цикл До, который понижает значение в целевых ячейках, начиная с 0,99 (х = 0,99), а затем использую эти значения для завершения вычисления. Мне нужно, чтобы этот цикл остановился, если выполнено 1 из 2 условий.
- Расчетное значение находится в пределах 10% от цели.
OR
- х = 0,75
Если расчет не соответствует цели, цикл снизит x на 0,005 и попытается снова. Но я хочу, чтобы 0,75 было нижним пределом х.
Do Until
(Workbooks("Group 4 Correlation Solver").Sheets("STRUCTURETOOL").Range("J23").Value * -1 >= Workbooks("Group 4 Correlation Solver").Sheets("STRUCTURETOOL").Range("U28").Value * 0.9 And Workbooks("Group 4 Correlation Solver").Sheets("STRUCTURETOOL").Range("J23").Value * -1 <= Workbooks("Group 4 Correlation Solver").Sheets("STRUCTURETOOL").Range("U28").Value * 1.1) Or (x = 0.75)
Deal_ID = VBA.Right(Workbooks("Weekly Option Update (Master).xlsm").Sheets("GDD Group").Cells(i, "G").Value, 7)
Sheets("Correlation").Range("E7").Value = x
Workbooks("Group 4 Correlation Solver").Sheets("Correlation").Range("F8").Value = x
Workbooks("Group 4 Correlation Solver").Sheets("Correlation").Range("C9").Value = x
Workbooks("Group 4 Correlation Solver").Sheets("Correlation").Range("D10").Value = x
Workbooks("Group 4 Correlation Solver").Sheets("STRUCTURETOOL").Calculate
x = x - 0.005
Workbooks("Weekly Option Update (Master).xlsm").Sheets("GDD Group").Cells(i, "H") = x + 0.005
Loop
Мой код может быть не самым эффективным, но в настоящее время он выполняется. Проблема в том, что он не смотрит на 2-е условие нижнего предела x. Он просто продолжает идти, пока расчетное значение не окажется в пределах 10% от целевого значения.
Заранее прошу прощения за формат кода. Блок под «До» - это код с «и» и «или».