作为VBA (Excel)的新手,我正在尝试制作一种工具,它可以确定某项测试的诊断效率;以便作为另一项诊断测试的预筛选具有成本效益。
我想要它做的是计算测试A的某个收益率,在测试B的收益率下,两个测试的每个诊断成本是相同的。我编写的代码必须循环一定的范围以获得诊断收益,并在测试A的每次诊断成本低于测试B的每次诊断成本时退出此循环。
但是,代码会在这个范围内保持循环,但不会在满足我的成本条件时停止。我尝试了很多方法,包括do while和do until语句,但就是不起作用。我真的希望有人能帮我解决问题!首先要感谢大家!柯尔斯腾
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发布于 2015-06-15 21:49:52
你有一个双循环(这两个循环似乎都在做同样的事情):
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。您可能希望根据Yield_A更新循环体中的Cost_diagnosis_A和/或Cost_diagnosis_B的值
https://stackoverflow.com/questions/30846544
复制相似问题