CORREL函数仅在不同的数据集上返回值0,1或-1

时间:2016-08-30 20:03:03

标签: excel vba excel-vba

我有两个1x345阵列,包含历史价格和存储数据。虽然我可以手动计算整个阵列的相关系数,但我想计算不同时间偏移的多个相关系数。 (基本上,如果我延迟一个阵列1周,2周等,系数是多少)为了达到这个目的,我写了一个简单的VBA脚本(希望!)将“滞后”B列与静态A列相关联。目前,宏只返回0,1或-1的值,这显然是不正确的。

关于为什么CORREL功能正在推出这些圆形答案的任何想法?

Sub cor()
    Dim i As Long, Astart As Long, Aend As Long
    Dim Bstart As Long, Bend As Long
    Dim cor As Long, offset As Long
    For i = 2 To 346
        offset = Cells(i, 3).Value
        Astart = 2
        Aend = 346 - offset
        Bstart = 2 + offset
        Bend = 346
        If Astart >= Aend Then
            Exit For
        End If
        Set arng = Range("A" & Astart & ":A" & Aend)
        Set brng = Range("B" & Bstart & ":B" & Bend)
        cor = WorksheetFunction.Correl(arng, brng)
        Cells(i, 4).Value = co
    Next i
End Sub

1 个答案:

答案 0 :(得分:0)

Long是32位整数类型。

根据您的精确度需求,您需要使用SingleDouble代替Tim Williams indicated