联盟范围低于彼此 - VBA Excel

时间:2013-07-11 16:40:20

标签: vba excel-vba excel

我正在尝试将两个低于彼此的范围结合起来执行多重回归。

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

假设我在范围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范围彼此相邻但在下方时没有 - 即来自同一列

时,它可以正常工作

1 个答案:

答案 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,则会收到错误“对象变量或未设置块变量”。