【发布时间】:2016-08-12 10:46:16
【问题描述】:
我在查找有关在 Excel 的 VBA 中的子例程中使用 Linest 的信息时遇到问题。我需要返回一列 x 值(从第 17 行开始的 A 列)和一列 y 值(从第 17 行开始的 G 列)的多项式系数(三阶或四阶)。
我目前正在使用的代码如下所示,并且可以正常工作。
Dim X
X = Application.Evaluate("=linest(g17:g61,A17:A61^{1,2,3})")
Cells(3, 8) = X(1)
Cells(4, 8) = X(2)
Cells(5, 8) = X(3)
Cells(6, 8) = X(4)
基本上,我需要能够使这个子例程处理任何长度的数据。数据将始终开始在第 17 行输入。为此,我一直在尝试使用类似于下面显示的代码。
Range(Cells(i, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)), Range(Cells(i, 2), Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2))
但是,当我使用与上述类似的范围而不是 G17:G61 时,我会收到类型不匹配错误。我不明白为什么单元格范围与G17:G61 格式的单元格范围不同。我也尝试过使用简单的Range(Cells(17,1),Cells(61,1)) 而不是A17:A61。
我也尝试过使用"G" & 17:"G" & 61 而不是G:17:G61,就像我在浏览时看到的那样,但这似乎也不能解决我的问题。
还有其他更好的功能吗?
请帮忙!
【问题讨论】:
-
您的标题表明这是在 Excel 中进行回归的问题。 Excel VBA 中的编程范围确实是一个问题。这个网站上已经有很多很好的内容了。 This 有几个简单的例子。
-
我在尝试使用 Linest 函数的能力范围内很难找到足够的信息(即用于更高多项式的 VBA),所以我一直在努力理解究竟是什么我应该输入。可以进一步扩展吗?
标签: vba excel regression excel-2013