Can an array be used within the LinEst function in VBA?

前端 未结 2 470
轮回少年
轮回少年 2021-01-14 00:38

Basically, rather that selecting a range from cells I have stored values in an array through the use of a loop. What I would ideally like to do is use these arrays as the kn

相关标签:
2条回答
  • 2021-01-14 01:12

    Yes, it can be done. The code snippet below should help get you started:

        Dim x() As Variant
        ReDim x(1 To 3)
        x(1) = 1
        x(2) = 2
        x(3) = 3
    
        Dim y() As Variant
        ReDim y(1 To 3)
        y(1) = 4
        y(2) = 5
        y(3) = 6
    
        Dim z() As Variant
        z = WorksheetFunction.LinEst(x, y)
    

    The function returns a Variant which "boxes" an array of Variant (which will be either one- or two-dimensional). The other two parameters (not shown above) are either True or False. The function is otherwise detailed in the Excel Help.

    0 讨论(0)
  • 2021-01-14 01:32

    I achieved this with the below code. Hope it helps.

    Sub RunLinEst()
        Dim vectorX() As Double
        Dim vectorY() As Double
        Dim theLeastSquareCoef
    
    
        'you need to define matrix otherwise it doesn't work
        ReDim vectorX(0 To 4, 0 To 0)
        ReDim vectorY(0 To 4, 0 To 0)
    
        vectorX(0, 0) = 0
        vectorX(1, 0) = 1
        vectorX(2, 0) = 2
        vectorX(3, 0) = 3
        vectorX(4, 0) = 4
    
        vectorY(0, 0) = 0
        vectorY(1, 0) = 1
        vectorY(2, 0) = 4
        vectorY(3, 0) = 9
        vectorY(4, 0) = 16
    
    
        theLeastSquareCoef = Application.LinEst(vectorY, Application.Power(vectorX, Array(1, 2))) 
    
        Range("F4").Value = Application.Index(theLeastSquareCoef, 1)
        Range("F5").Value = Application.Index(theLeastSquareCoef, 2)
        Range("F6").Value = Application.Index(theLeastSquareCoef, 3)
    
    
    End Sub
    
    0 讨论(0)
提交回复
热议问题