首页 > 解决方案 > 在 VBA 中编写索引和 LinEst 公式

问题描述

如何将下一个场景复制到VBA

在此处输入图像描述

VBA我的问题是使用脚本编写公式。

我已经做了以下事情:

Sub CALC()
        Dim X(1 to 10) as Double
        Dim Y(1 to 10) as Double
        Dim QUA_A as Double
    '--------
        For N = 1 to 10
            X(N) = Cells(N, 1).Value
            Y(N) = Cells(N, 2).Value         
        Next N
    '--------
        QUA_A = WorksheetFunction.Index(WorksheetFunction.LinEst(X, Y ^ [1,2]), 1)
End Sub

但是,我在线上遇到语法错误QUA_A = ...

我错过了什么?谢谢。

笔记:

我想我在我的任务中误导了你们。首先,我不打算使用范围。真正的问题涉及更大的数组,如果我写数组(甚至在一张xlVeryHidden纸上),运行整个过程会花费太长时间。我只是使用这张(图像)来解释这个问题。其次,当我使用命令时

QUA_A = WorksheetFunction.Index(WorksheetFunction.LinEst(X, Y), 1) 

没有引发错误,并且值与它的等价物相同

=INDEX(LINEST(A1:A10;B1:B10);1)

所以,对我来说很明显这两个公式都可以很好地处理数组而不是范围。

标签: excelvba

解决方案


将 X 设为二维数组,并在公式之前执行数学部分:

Sub CALC()
        Dim X(1 To 2, 1 To 10) As Double
        Dim Y(1 To 10) As Double
        Dim QUA_A As Double
    '--------
        For n = 1 To 10
            X(1, n) = Cells(n, 2).Value
            X(2, n) = Cells(n, 2).Value ^ 2
            Y(n) = Cells(n, 1).Value
        Next n
    '--------
        QUA_A = WorksheetFunction.Index(WorksheetFunction.LinEst(Y, X), 1)
        Debug.Print QUA_A
End Sub

推荐阅读