Hallo liebe VB Community,
ich möchte eine Prozedur erstellen, die Aktienportfolios nach verschiedenen Kriterien filtert und diese Datensätze in ein neues Tabellenblatt neu zusammenfügt.
Ich habe bisher den unten angefügten Code geschrieben, komme aber jetzt nicht mehr weiter weil mir folgender Fehler angezeigt wird: "Invalid Next Control Reference".
Ich glaube auch, dass mein bisheriger Code einige Logikfehler beinhaltet
Kurz zu den Daten. In einem Datenblatt sind die sogenannten "Ölpreis Exposure" aller untersuchten Aktien. Die Aktiennamen stehen in Spalte A. In Spalte B bis Spalte FY stehen die Monate (von Januar 2000 - Dezember 2014) mit den dazugehörigen Exposures.
Jetzt soll der Code mit Januar 2000 anfangen und diesen Monat nach verschiedenen Kriterien nacheinander durchfiltern. Das Kriterium ist die Variable "Elast". Hier sollen unterschiedliche Bereiche gesucht werden, die zwischen -10,5 und 10 liegen (Das sind dann insgesamt 10 Suchkriterien). Jeder dieser Bereiche soll dann in das Sheet "<- Öl Portfolio" an der richtigen Stelle kopiert werden.
Kleines Beispiel:
Januar 2000 --> Kriterium -10< x <=-8 ---> BMW (-9), VW (-9,4), Deutsche Post (-8,2) erfüllen diese Kriterien. Kopiere die Zahlen mit dem jeweiligen Monat als Überschrift in neues Sheet "Öl Portfolio" zum dazugehörigen Bereich. Dann suche in einem Tabellenblatt "Renditen" die Namen "BMW, VW, Deutsche Post" und kopiere die Renditen für Januar 2000 wieder mit dem Monat als Überschrift in Sheet "Öl Portfolio".
Dann nächster Kriteriumsbereich.
Dann nächster Monat.
Die Daten für den nächsten Monat soll dann einfach mit xlEnd(down) zum dazugehörigen Bereich kopiert werden.
Das Tabellenblatt "Renditen" ist identisch vom Aufbau wie dass Blatt "Ölpreis Exposure", Dieses "Find Name" Matching habe ich noch nicht im Code geschrieben.
Public DataReturn, DataExposure, PFExposure As Worksheet
Sub SortExposure()
Set DataReturn = Worksheets("Monatl. Aktienrenditen(1)")
Set DataExposure = Worksheets("monatl. Ölexposure")
Set PFExposure = Worksheets("<- Öl Portfolio")
Dim x As Integer
Dim Elast As Integer 'Kriterium
Dim i As Integer
Dim Exposnum As Integer
For i = 1 To 11 Step 1 ' Schleife für das Kriterium
Elast = PFExposure.Cells(3, i).Value ' Nehme den Wert für das Kriterium auf
For Exposnum = 3 To 30 Step 3 ' Schleife für den Einfügebereich des Kriteriums im Sheet Portfolio
For x = 2 To 180 Step 1 ' Schleife für die einzelnen Monate
DataExposure.Range("A:FY").AutoFilter Field:=x, Criteria1:=">" & Elast & "" _
, Operator:=xlAnd, Criteria2:="<=" & Elast + 1 & ""
DataExposure.Range(Cells(4, x), Cells(4, x).End(xlDown)).Copy
PFExposure.Cells(5, Exposnum).End(xlDown + 1).PasteSpecial
DataExposure.ShowAllData
Next i ' Hier erscheint der Fehler
Next Exposnum
Next x
End Sub
Anbei auch noch 3 Screenshots der Daten. Vielen Vielen Dank für eure Hilfe
P.S. bei Fragen oder Anmerkungen bitte einfach melden.
ich möchte eine Prozedur erstellen, die Aktienportfolios nach verschiedenen Kriterien filtert und diese Datensätze in ein neues Tabellenblatt neu zusammenfügt.
Ich habe bisher den unten angefügten Code geschrieben, komme aber jetzt nicht mehr weiter weil mir folgender Fehler angezeigt wird: "Invalid Next Control Reference".
Ich glaube auch, dass mein bisheriger Code einige Logikfehler beinhaltet
Kurz zu den Daten. In einem Datenblatt sind die sogenannten "Ölpreis Exposure" aller untersuchten Aktien. Die Aktiennamen stehen in Spalte A. In Spalte B bis Spalte FY stehen die Monate (von Januar 2000 - Dezember 2014) mit den dazugehörigen Exposures.
Jetzt soll der Code mit Januar 2000 anfangen und diesen Monat nach verschiedenen Kriterien nacheinander durchfiltern. Das Kriterium ist die Variable "Elast". Hier sollen unterschiedliche Bereiche gesucht werden, die zwischen -10,5 und 10 liegen (Das sind dann insgesamt 10 Suchkriterien). Jeder dieser Bereiche soll dann in das Sheet "<- Öl Portfolio" an der richtigen Stelle kopiert werden.
Kleines Beispiel:
Januar 2000 --> Kriterium -10< x <=-8 ---> BMW (-9), VW (-9,4), Deutsche Post (-8,2) erfüllen diese Kriterien. Kopiere die Zahlen mit dem jeweiligen Monat als Überschrift in neues Sheet "Öl Portfolio" zum dazugehörigen Bereich. Dann suche in einem Tabellenblatt "Renditen" die Namen "BMW, VW, Deutsche Post" und kopiere die Renditen für Januar 2000 wieder mit dem Monat als Überschrift in Sheet "Öl Portfolio".
Dann nächster Kriteriumsbereich.
Dann nächster Monat.
Die Daten für den nächsten Monat soll dann einfach mit xlEnd(down) zum dazugehörigen Bereich kopiert werden.
Das Tabellenblatt "Renditen" ist identisch vom Aufbau wie dass Blatt "Ölpreis Exposure", Dieses "Find Name" Matching habe ich noch nicht im Code geschrieben.
Public DataReturn, DataExposure, PFExposure As Worksheet
Sub SortExposure()
Set DataReturn = Worksheets("Monatl. Aktienrenditen(1)")
Set DataExposure = Worksheets("monatl. Ölexposure")
Set PFExposure = Worksheets("<- Öl Portfolio")
Dim x As Integer
Dim Elast As Integer 'Kriterium
Dim i As Integer
Dim Exposnum As Integer
For i = 1 To 11 Step 1 ' Schleife für das Kriterium
Elast = PFExposure.Cells(3, i).Value ' Nehme den Wert für das Kriterium auf
For Exposnum = 3 To 30 Step 3 ' Schleife für den Einfügebereich des Kriteriums im Sheet Portfolio
For x = 2 To 180 Step 1 ' Schleife für die einzelnen Monate
DataExposure.Range("A:FY").AutoFilter Field:=x, Criteria1:=">" & Elast & "" _
, Operator:=xlAnd, Criteria2:="<=" & Elast + 1 & ""
DataExposure.Range(Cells(4, x), Cells(4, x).End(xlDown)).Copy
PFExposure.Cells(5, Exposnum).End(xlDown + 1).PasteSpecial
DataExposure.ShowAllData
Next i ' Hier erscheint der Fehler
Next Exposnum
Next x
End Sub
Anbei auch noch 3 Screenshots der Daten. Vielen Vielen Dank für eure Hilfe
P.S. bei Fragen oder Anmerkungen bitte einfach melden.