作为VBA(Excel)的新手,我正在尝试制作一个工具,它决定某个测试的诊断产量必须是多少;为了具有成本效益,作为另一种诊断测试的预筛选。
我想要它做的是计算测试A的某个产量,对于测试B的产量,两个测试的每个诊断的成本是相同的。我编写的代码必须循环一定的诊断产量范围,并在测试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
答案 0 :(得分: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
的值?