簡體   English   中英

在創建excel-vba函數時需要幫助

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM