Excel accessvba中指数移动平均的计算
在Excel VBA中,我有一个工作函数来计算指数加权移动平均值,如下所示 我想将此函数转换为Access VBA,以便与Access中的某些数据一起使用 我有以下表格的数据:Excel accessvba中指数移动平均的计算,excel,ms-access,vba,Excel,Ms Access,Vba,在Excel VBA中,我有一个工作函数来计算指数加权移动平均值,如下所示 我想将此函数转换为Access VBA,以便与Access中的某些数据一起使用 我有以下表格的数据: BucketDate InterpRate 8/17/2015 5.56992228328638E-03 8/18/2015 5.64693660341032E-03 8/19/2015 5.72395092353427E-03 8/20/2015 5.8009652
BucketDate InterpRate
8/17/2015 5.56992228328638E-03
8/18/2015 5.64693660341032E-03
8/19/2015 5.72395092353427E-03
8/20/2015 5.80096524365821E-03
8/21/2015 5.87797956378215E-03
8/22/2015 5.9549938839061E-03
8/23/2015 6.03200820403004E-03
8/24/2015 6.10902252415399E-03
... ...
76个数据点。VBA子例程如下所示:
Function EWMA(InterpRate As Range, Lambda As Double, _
MarkDate As Date, MaturityDate As Date) As Double
Dim vZeros() As Variant
Dim Price1 As Double, Price2 As Double
Dim SumWtdRtn As Double
Dim I As Long
Dim m As Double
Dim LogRtn As Double, RtnSQ As Double, WT As Double, WtdRtn As Double
vZeros = InterpRate
m = Month(MaturityDate) - Month(MarkAsOfDate)
For I = 2 To UBound(vZeros, 1)
Price1 = Exp(-vZeros(I - 1, 1) * (m / 12))
Price2 = Exp(-vZeros(I, 1) * (m / 12))
LogRtn = Log(Price1 / Price2)
RtnSQ = LogRtn ^ 2
WT = (1 - Lambda) * Lambda ^ (I - 2)
WtdRtn = WT * RtnSQ
SumWtdRtn = SumWtdRtn + WtdRtn
Next I
EWMA = SumWtdRtn ^ (1 / 2)
End Function
但是,我无法将InterpRate传递到数组中以用于计算指数加权移动平均值。如何更改此值以计算指数移动平均值?在Excel VBA中也不能为数组指定双精度。这一定不是Excel VBA函数。对不起,它在Excel中工作,我刚刚更正了第一行,谢谢,收到了。您将从Access向函数传递什么?唱片集?在Excel中,
Range.Value
属性(Value
是默认属性,因此当您不提供属性时,它就是您要调用的属性)可以传递一个变量以生成二维数组。但是Access中没有Range
属性。如果您将数据排列在一个数组中并传递该数组以代替Range,则可以利用以下信息:。或者,传递一个记录集(对于我们大多数人来说是DBA)。无论哪种方式,您都需要学习访问方法。