Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel accessvba中指数移动平均的计算_Excel_Ms Access_Vba - Fatal编程技术网

Excel accessvba中指数移动平均的计算

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

在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.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)。无论哪种方式,您都需要学习访问方法。