[英]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.