Komplexes Filtern und Sortieren

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    Komplexes Filtern und Sortieren

    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.
    Bilder
    • Kriterium.JPG

      247,06 kB, 1.335×455, 203 mal angesehen
    • Renditen.JPG

      167,83 kB, 880×416, 206 mal angesehen
    • Portfolio.JPG

      92,15 kB, 1.344×471, 209 mal angesehen

    Maeaex1 schrieb:

    For i = 1 To 11 Step 1 ' Schleife für das Kriterium
    For Exposnum = 3 To 30 Step 3 ' Schleife für den Einfügebereich des Kriteriums im Sheet Portfolio

    Next i ' Hier erscheint der Fehler
    Next Exposnum
    Du kannst die Schleifen nur inneinander verschachteln, nicht versetzt.
    Die innere Schleife muss abgeschlossen sein, bevor du die äussere Schleife beenden kannst.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --