我正在尝试将两个低于彼此的范围结合起来执行多重回归。
这个例子将使我的问题清楚......
假设我在范围A1:A5和A:6到A:10中读取我的函数中的参数。 然后我想创建一个5x2矩阵,将这两个范围彼此相邻并将其分配给变量。
我需要这种格式的数据,然后我可以在另一个包含B1:B5范围的变量上对其进行回归。
使用工作表中的数据并不理想,因为我需要多次执行此操作并且每次只下载数据。
非常感谢任何帮助,亲切的问候。
到目前为止,这是我的代码:
Function Dimson1Yearly(y_range, x_range1, x_range2, x_range3)
Dim entireRange As Variant
Dim i As Integer
entireRange = Application.Union(x_range1, x_range2, x_range3)
Dim RegressionStats As Variant
RegressionStats = WorksheetFunction.LinEst(y_range, entireRange, True, True)
Dim j As Integer
Dim sum As Double
sum = 0
For j = 1 To 3
sum = sum + RegressionStats(1, j)
Next
Dimson1Yearly = sum
End Function
注意:当所选择的x范围彼此相邻但在下方时没有 - 即来自同一列
时,它可以正常工作答案 0 :(得分:0)
您需要使用Set
Set entireRange = Application.Union(x_range1, x_range2, x_range3)
使用对象变量。
如果您知道它将是一个范围,您应该使用Dim entireRange As Range
,这样可以更容易地发现问题。但是,如果您在工作表中使用您的函数,则需要使用断点来发现它。即使这样,它也有点棘手。最好的方法是查看立即窗口(Ctrl-G)并尝试使用以下命令执行该功能:
?Dimson1Yearly(range("a1"),range("b4"),range("d6"),range("e7"))
如果您使用过Dim entireRange As Range
,则会收到错误“对象变量或未设置块变量”。