2016-12-25 3 views
1

Ich habe ein Arbeitsblatt mit meiner X-Datensatz bleibt derselbe und ich möchte 100 verschiedene Regressionen ausführen, mit verschiedenen y-Datensätzen.Looping eine Regression in VBA

Der Code, den ich habe, ist

Application.Run "ATPVBAEN.XLAM!Regress", ActiveSheet.Range("$F$3:$F$22"), _ 
ActiveSheet.Range("$C$3:$E$22"), False, False, , Range("F2").Value, False, False, _ 
False, False, , False 

Wie kann ich Schleife dies so, dass die y-Datensatz in der nächsten Spalte, in diesem Fall G3 ändern wird: G22 und auch die Arbeitsblatt-Name von dem, was der Kopf In diesem Fall wäre es Zelle G2?

Danke

+0

Sie sollten Ihren Code beim Posten formatieren. Schau mal hier http://meta.stackexchange.com/questions/22186/how-doi-for-mat-my-code-blocks – TheCrafter

Antwort

2

Vielleicht sind Sie etwas wie folgt aussehen:

Dim x as WorkSheet : Set x = ActiveSheet '<-- I'd recommend to set it with the sheet's name (i.e. x = Worksheets("Xdataset")) 
Dim col as string 
For Each col In Array("F", "G") '<-- setup the columns you want to iterate on 
    Application.Run "ATPVBAEN.XLAM!Regress", x.Range(col & "3:" & col & "22"), _ 
    x.Range("$C$3:$E$22"), False, False, , x.Range(col & "2").Value, False, False, _ 
    False, False, , False 
Next 

EDIT

Da Sie müssen so weit wie zu CU, die Array-Lösung kann schwierig geworden, um zu gehen Art. Eine bessere Lösung für diesen Fall wäre:

Dim x as WorkSheet : Set x = ActiveSheet '<-- I'd recommend to set it with the sheet's name (i.e. x = Worksheets("Xdataset")) 
Dim col as Range 
For Each col in x.Range("F3:CU22").Columns 
    Application.Run "ATPVBAEN.XLAM!Regress", col, 
    x.Range("$C$3:$E$22"), False, False, , col.Cells(0).Value, False, False, False, False, , False 
Next 
+0

Danke, das scheint zu funktionieren, kann ich diese Spalten im Array von einrichten mache ich einen Bereich wie Array ("G: O"), oder muss ich die Spalten einzeln eingeben? – user7340640

+0

@ user7340640 Mit dieser Lösung müssen Sie das Array explizit füllen, d. H. 'Array (" F "," G "," H ", ...," O ")'. Wir können es auch automatisch machen, aber ich denke nicht, dass es das wert ist, es geht nur darum, das Array zu füllen :) –

+0

Ich sehe. Der einzige Grund, warum ich frage, ist, dass ich das bis zur Spalte "CU" brauche. – user7340640