1

我正在尝试合并两个低于另一个的范围以执行多元回归。

这个例子将使我的问题清楚..

假设我在函数中读取范围 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

Note: It works fine when the x ranges that are chosen are next to each other but not when below - ie from the same column

4

1 回答 1

0

你需要使用Set

Set entireRange = Application.Union(x_range1, x_range2, x_range3)

与对象变量。

如果您知道它将是一个 Range,则应该使用Dim entireRange As Range它,这将更容易发现问题。但是,如果您在工作表中使用您的函数,则需要使用断点来发现这一点。即使这样也有点棘手。最好的方法是查看即时窗口 (Ctrl-G) 并尝试从那里执行该功能:

?Dimson1Yearly(range("a1"),range("b4"),range("d6"),range("e7"))

如果您使用过Dim entireRange As Range,您将收到错误“对象变量或未设置块变量”。

于 2013-07-11T19:38:10.023 回答