| 
    
     |  | ごじら さん、こんにちわ。 
 >今度は係数を増やして、重回帰分析もやってみようと思ったのですが、
 >問題が出てきました。
 >dt配列(?)のインデックスが有効範囲内にないというのです。
 >dtはVariant型ということですが、配列として宣言していないので、大きさがよくわかりません。
 
 >With Application.ActiveSheet
 > Set ry = Range(Cells(1, 1), Cells(5, 1)) 'Y
 > Set rx(1) = Range(Cells(1, 2), Cells(5, 2)) 'X1
 > Set rx(2) = Range(Cells(1, 3), Cells(5, 3)) 'X2
 >End With
 >
 >With Application.WorksheetFunction
 > dt = .LinEst(ry, rx(1), rx(2))
 >End With
 
 
 こんどは重回帰という事で、もう一度LINESTのヘルプを見ると、
 
 使用例 3  多変数の線形回帰
 =LINEST(E2:E12,A2:D12,TRUE,TRUE)
 
 という渡し方になっています。
 なので、
 
 Sub test()
 Dim rx As Range, ry As Range
 Dim dt As Variant
 With Application.ActiveSheet
 Set ry = .Range(.Cells(1, 1), .Cells(5, 1)) 'Y: A1:A5
 Set rx = .Range(.Cells(1, 2), .Cells(5, 3)) 'X: B1:C5
 End With
 '渡し方は同じ
 With Application.WorksheetFunction
 dt = .LinEst(ry, rx) '切片を0としない、補正項は考慮しない
 End With
 
 MsgBox "x1 = " & dt(2) '順番に注意。詳細はLINESTのヘルプを見てね。
 MsgBox "x2 = " & dt(1) '上に同じ。
 MsgBox "切片 = " & dt(3)
 Set rx = Nothing: Set ry = Nothing
 Erase dt
 End Sub
 
 こんな感じです。
 
 
 |  |