我需要使用數據分析工具包創建簡單迴歸。事情是,Y和X輸入的範圍總是不同的。爲了說明什麼,我想說,這裏的表的一個例子,我需要在工作:定義X和Y將發生變化的迴歸範圍
A B C D E F G H I J K L
1 Y T T1 T2 T3 T4 T5 T6 T7 T8 T9 T10
2 19 1
3 13 2 19
4 14 3 13 19
5 16 4 14 13 19
6 17 5 16 14 13 19
7 16 6 17 16 14 13 19
8 20 7 16 17 16 14 13 19
9 10 8 20 16 17 16 14 13 19
10 20 9 10 20 16 17 16 14 13 19
11 11 10 20 10 20 16 17 16 14 13 19
12 11 11 11 20 10 20 16 17 16 14 13 19
13 14 12 11 11 20 10 20 16 17 16 14 13
14 15 13 14 11 11 20 10 20 16 17 16 14
15 17 14 15 14 11 11 20 10 20 16 17 16
16 10 15 17 15 14 11 11 20 10 20 16 17
17 4 16 10 17 15 14 11 11 20 10 20 16
18 15 17 4 10 17 15 14 11 11 20 10 20
19 6 18 15 4 10 17 15 14 11 11 20 10
20 10 19 6 15 4 10 17 15 14 11 11 20
21 16 20 10 6 15 4 10 17 15 14 11 11
22 16 10 6 15 4 10 17 15 14 11
23 16 10 6 15 4 10 17 15 14
24 16 10 6 15 4 10 17 15
25 16 10 6 15 4 10 17
26 16 10 6 15 4 10
27 16 10 6 15 4
28 16 10 6 15
29 16 10 6
30 16 10
31 16
在這個例子中,輸入Y將範圍A12:A21,這是因爲第一個條目表格的最後一列(單元格L12中的「19」)在行12中並且表格的第一列中的最後一項(單元格A21中的「16」)在行21中;此外,由於相同的原因,X輸入將是區域B12:L21。
做完第一次迴歸之後,我需要從表格中刪除兩列,然後再做一次迴歸。所以,如果,例如我需要刪除列J和L,該表是這樣的:
A B C D E F G H I J
1 Y T T1 T2 T3 T4 T5 T6 T7 T9
2 19 1
3 13 2 19
4 14 3 13 19
5 16 4 14 13 19
6 17 5 16 14 13 19
7 16 6 17 16 14 13 19
8 20 7 16 17 16 14 13 19
9 10 8 20 16 17 16 14 13 19
10 20 9 10 20 16 17 16 14 13
11 11 10 20 10 20 16 17 16 14 19
12 11 11 11 20 10 20 16 17 16 13
13 14 12 11 11 20 10 20 16 17 14
14 15 13 14 11 11 20 10 20 16 16
15 17 14 15 14 11 11 20 10 20 17
16 10 15 17 15 14 11 11 20 10 16
17 4 16 10 17 15 14 11 11 20 20
18 15 17 4 10 17 15 14 11 11 10
19 6 18 15 4 10 17 15 14 11 20
20 10 19 6 15 4 10 17 15 14 11
21 16 20 10 6 15 4 10 17 15 11
22 16 10 6 15 4 10 17 14
23 16 10 6 15 4 10 15
24 16 10 6 15 4 17
25 16 10 6 15 10
26 16 10 6 4
27 16 10 15
28 16 6
29 10
30 16
而且現在的迴歸將與輸入Y(A11:A21),因爲在最後一列的第一個條目(單元格J11中的「19」)在行11中。表中第一列中的最後一項(單元格A21中的「16」)在行21中。同樣,X輸入將是(B11:J21)出於同樣的原因。
我嘗試了一百種不同的方式,但沒有運氣。這是最接近我已經創造我需要什麼,但我還是輸了,因爲它不會執行迴歸:
Sub Prueba1()
Range("A1").Select
Selection.End(xlToRight).Select
Selection.End(xlDown).Select
Selection.End(xlToLeft).Select
Application.Run "ATPVBAEN.XLAM!Regress", Range(Selection, Selection.End(xlDown)).Select, _
Range(Selection.Offset(, 1), Selection.End(xlToRight)).Select, False, False, , Range("S1") _
, False, False, False, False, , False
End Sub
那麼您正在尋找運行迴歸,修改數據,然後運行第二個迴歸和報告兩個結果? – brettdj
幾乎,我只需要它來運行迴歸。數據修改需要由我來完成,因爲我需要擦除的列不總是相同的,它們總是在變化,這就是爲什麼我不能創建一個代碼來簡單地說明固定到某個區域的範圍,範圍需要改變根據我在問題中所述。 – Alexzuqui
聽起來好像你實際上需要一個返回範圍或範圍地址的函數,它可以作爲參數放入原始的'Application.Run'中。 'Range(「S1」)'是如何影響列刪除的? – Jeeped