Excel VBA #Value! 错误

我有以下function,当我运行它说#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 

Bootstrapping函数计算下面的值其实我试图计算这个公式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-

给定的input是[S1,S2,… .Sn],[Z(t,T1),Z(t,T2)… ..Z(t,Tn)]和L = 0.4

试试这个代码:inputas = Bootstrap(A1:B1,A2:B2,0.4)
我纠正了以下内容
– 将范围分配给变体
– 将dt定义为double
– Dim Q()为0到n
– 在公式中使用A()和b()
– input范围是行而不是列

 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 

习惯于格式化和增加代码,特别是在发布之前!


  1. 您需要input函数的输出(在函数名称的行上)
  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