[英]need help in creating excel-vba function
我的问题:当我在SUb中调用它时,它工作正常。 但是它给“ pf”的值带来了很大的跳跃。我想给一个条件,就是pf总是小于dpdlold ...我尝试了不同的方法,但是没有任何效果。
代码从这里开始:
Public Function pf(p, pwf, xf, PI, tau, n, k, wg, Hf, wf, Bg, dpdlold, mug, Bg_p, mug_p)
Dim i, j As Integer
Dim error As Double
Dim pj As Double
Dim pj1 As Double
Dim pj0 As Double
Dim e As Double
j = 100
i = 0
error = 1000
pj0 = dpdlold
pj = pj0
e = 0.001
While (error > e) And (i < j)
qgr = FrGas(tau, n, k, wg, Hf, wf, pj, mug_p)
pj1 = (p - pwf - 2 * qgr / PI) / xf
error = Abs(pj1 - pj)
pj = pj1
i = i + 1
Wend
pf = pj
End Function
如何将循环更改为如下所示:
While (error > e) And (i < j)
qgr = FrGas(tau, n, k, wg, Hf, wf, pj, mug_p)
pj1 = (p - pwf - 2 * qgr / PI) / xf
error = Abs(pj1 - pj)
if pj1 > dpdlold Then pj1 = dpdlold
pj = pj1
i = i + 1
Wend
现在,如果pj1
太大,它将被“剪切”为dpdlold
的值。 如果它两次达到极限,则连续估计中的“错误”将为零,并且将停止。
您所提供的信息有限,这是我所能做到的最好的…
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.