簡體   English   中英

Excel VBA#值! 錯誤

[英]Excel VBA #Value! Error

我有以下函數,當我運行它時會顯示#value! 錯誤。

我將不勝感激任何幫助。

Function Bootstrap(S As Object, Z As Object, L As Double)

    Dim j As Integer
    Dim a() As Double
    Dim b() As Double
    Dim n As Integer
    Dim Q() As Double
    Dim sum As Double
    Dim P As Double

    ReDim a(1 To n)
    ReDim b(1 To n)
    ReDim Q(1 To n)

    dt = 1
    sum = 0
    Q(0) = 0

    For j = 1 To n - 1
        S.Cells(j, 1).Value = a(j)
        Z.Cells(j, 2).Value = b(j)
        P = Z(j) * (L * Q(j-1) - (L + dt * a(n) * Q(j))
        sum = sum + P
    Next j

    Bootstrap = sum

End Function

自舉函數計算以下值實際上,我正在嘗試計算此公式Q(t,Tn)=(∑(j = 1)至(n-1)Z(t,Tj) [LQ(t,Tj-1) -(L + dt Sn) Q(t,Tj)] / [Z(t,Tn) (L + dt * Sn)] +(Q(t,Tn-1) L)/(L + dt Sn)

給定的輸入為[S1,S2,.... Sn],[Z(t,T1),Z(t,T2)..... Z(t,Tn)]和L = 0.4

養成格式化和增加代碼的習慣,尤其是在發布代碼之前!


  1. 您需要鍵入函數的輸出(在函數名稱的行上)
  2. P = Z(j) * (L*Q(j-1)-(L+ dt * a(n) * Q(j))缺少括號
  3. 當您嘗試重新格式化數組時, n為空( abQ也是空的),因此需要定義它們!
  4. Z(j)也會給您一個錯誤,因為它是一個范圍,因此您需要Z.Cells(i,j)

嘗試這個 :

Function Bootstrap(S As Range, Z As Range, L As Double) As Double
Dim j As Integer
Dim a() As Double
Dim b() As Double
Dim n As Integer
Dim Q() As Double
Dim sum As Double
Dim P As Double

n = Application.WorksheetFunction.Max(S.Columns.count, Z.Columns.count)
a = S.Value
b = Z.Value
dt = 1
sum = 0
ReDim Q(1 To n)
Q(0) = 0
'Q(1) = "??"


For j = 1 To n - 1
    P = b(1, j) * (L * Q(j - 1)) - (L + dt * a(1, j) * Q(j - 1))
    sum = sum + P
    Q(j) = sum
Next j

Bootstrap = sum
End Function

嘗試以下代碼:輸入為= Bootstrap(A1:B1,A2:B2,0.4)
我已更正以下內容
-將范圍分配給變體
-將dt定義為double
-將Q()設為0到n
-在公式中使用A()和b()
-輸入范圍是行而不是列

Function Bootstrap(S As Range, Z As Range, L As Double) As Double
Dim j As Integer
Dim a As Variant
Dim b As Variant
Dim n As Integer
Dim Q() As Double
Dim sum As Double
Dim P As Double
Dim dt As Double

n = Application.WorksheetFunction.Max(S.Columns.Count, Z.Columns.Count)
a = S.Value
b = Z.Value
dt = 1
sum = 0
ReDim Q(0 To n)
Q(0) = 0

For j = 1 To n - 1
    P = b(1, j) * (L * Q(j - 1)) - (L + dt * a(1, j) * Q(j - 1))
    sum = sum + P
    Q(j) = sum
Next j

Bootstrap = sum
End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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