繁体   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