Excel 访问LinEst函数生成的数组

Excel 访问LinEst函数生成的数组,excel,vba,Excel,Vba,我正在尝试使用以下代码从linEst函数输出所有数据行的R2值: Sub getdeflection6() Dim xvalues() As Double, yvalues() As Double, cell As Range Dim alldata As Range Dim results As Variant Dim counter As Integer ReDim xvalues(0 To 8, 0 To 0) ReDim yvalues(0 To 8, 0 To 0) ReDim re

我正在尝试使用以下代码从linEst函数输出所有数据行的R2值:

Sub getdeflection6()
Dim xvalues() As Double, yvalues() As Double, cell As Range
Dim alldata As Range
Dim results As Variant
Dim counter As Integer

ReDim xvalues(0 To 8, 0 To 0)
ReDim yvalues(0 To 8, 0 To 0)
ReDim results(0 To 5, 0 To 6)

xvalues(0, 0) = 0
xvalues(1, 0) = Range("S2").Value
xvalues(2, 0) = Range("P2").Value
xvalues(3, 0) = Range("M2").Value
xvalues(4, 0) = Range("J2").Value
xvalues(5, 0) = Range("G2").Value
xvalues(6, 0) = Range("C2").Value
xvalues(7, 0) = Range("B2").Value

Set alldata = Range("F7", Range("F7").End(xlDown))

counter = 7
For Each cell In alldata

    yvalues(0, 0) = 0
    yvalues(1, 0) = cell.Offset(0, 15).Value
    yvalues(2, 0) = cell.Offset(0, 12).Value
    yvalues(3, 0) = cell.Offset(0, 9).Value
    yvalues(4, 0) = cell.Offset(0, 6).Value
    yvalues(5, 0) = cell.Offset(0, 3).Value
    yvalues(6, 0) = cell.Value
    yvalues(7, 0) = 0

    results = Application.LinEst(yvalues, Application.Power(xvalues, Array(1, 2, 3, 4, 5)), True, True)

    Cells(counter, 23) = results(2, 0)
    counter = counter + 1

Next cell
End Sub

当我试图访问结果(2,0)数组以获取表示下标超出范围的R2值时,最后一行出现错误。我做错了吗?据我所知,结果数组将是5行6列?

当您将结果重拨为
redim results(0到5,0到6)
时,它不会“锁定”该变量数组的大小

此行将结果重置为结果(1到5,1到6)

事实上,原来的redim语句根本没有意义。使用新的LBound(结果,1)和LBound(结果,2)从数组中检索所需的值

Cells(counter, 23) = results(2, 1)

我不确定里面的2个。如果新的LBound(results,1)为1,则可能必须为3。

结果(0到5,0到6)
为6和7?在手表中查看
结果。它是暗淡的
1到5,1到6
为什么?Excel帮助显示生成的数组的示例。。它有5排?让我试试,我怎么用手表?对不起,我是新来的VBA从查看菜单打开手表窗口。在
results=…
之后放一个休息,然后将
results
拖到观察窗口上
Cells(counter, 23) = results(2, 1)