1

重回帰を実行するために、互いに下回る 2 つの範囲を統合しようとしています。

この例は私の質問を明確にします..

関数のパラメーターとして A1:A5 および A:6 から A:10 の範囲を読み取ったとします。次に、これら 2 つの範囲を並べて 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 範囲が隣り合っている場合は正常に機能しますが、下にある場合は正常に機能しません。つまり、同じ列からのものです。

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 に答える