Microsoft Excel

Herbers Excel/VBA-Archiv

If- Schleife mit mehreren Anweisungen

    Betrifft: If- Schleife mit mehreren Anweisungen von: Thorsten
    Geschrieben am: 29.09.2003 14:06:10

    Hi,
    habe folgendes Problem...
    aus einem Excelsheet sollen Daten gefiltert werden. Kriterium ist hier das Jahr in der Spalte N (beginnend ab zeile 13)

    Die einzelnen Zeilen (= Datensatz ) soll je nachdem´, welches Jahr nun in der Spalte steht, auf andere Tabellenblätter ( jeweils 1 pro Jahr) verteil werden.

    Dafür habe ich folgendes Makro geschrieben...

    Sub Thorsten()
    Dim i As Integer
    Dim j As Integer

    j = 17 'Zeile, mit der der Eintrag in Tabelle2 beginnen soll

    For i = 13 To 112
    If Worksheets("Analyse").Cells(i, 14).Value = "00" Then
     Worksheets("Analyse").Rows(i).Copy Destination:=Worksheets("00").Rows(j)
     'das jahr 2000
     
    ElseIf Worksheets("Analyse").Cells(i, 14).Value = "01" Then
     Worksheets("Analyse").Rows(i).Copy Destination:=Worksheets("01").Rows(j)
     'das Jahr 2001
     
    ElseIf Worksheets("Analyse").Cells(i, 14).Value = "02" Then
     Worksheets("Analyse").Rows(i).Copy Destination:=Worksheets("02").Rows(j)
     'das Jahr 2002
    ElseIf Worksheets("Analyse").Cells(i, 14).Value = "03" Then
     Worksheets("Analyse").Rows(i).Copy Destination:=Worksheets("03").Rows(j)
     'das Jahr 2003
    ElseIf Worksheets("Analyse").Cells(i, 14).Value = "04" Then
     Worksheets("Analyse").Rows(i).Copy Destination:=Worksheets("04").Rows(j)
     'das Jahr 2004
    ElseIf Worksheets("Analyse").Cells(i, 14).Value = "05" Then
     Worksheets("Analyse").Rows(i).Copy Destination:=Worksheets("05").Rows(j)
     'das Jahr 2005
     
    j = j + 1
    End If
    Next i
    End Sub
         

    Nur kopiert das Makro leider nur für jedes Jahr einen Datensatz und nciht alle.

    Woran liegt das und wie müßte ich das Makro verändern??
    Bin für jede Hilfe dankbar
      


    Betrifft: AW: If- Schleife mit mehreren Anweisungen von: xXx
    Geschrieben am: 29.09.2003 14:36:08

    Hallo,
    erstens würde ich das ganze in eine Select-Case Bedingung einbauen anstatt mit If-ElseIf zu arbeiten. Mit deiner Var. j erzeugst du leere Zeilen in deinen Blättern, da sie nach jedem Eintrag erhöht wird.

    For i = 13 To 112
    Select Case Worksheets("Analyse").Cells(i, 14).Value
    Case "00"
    j=Worksheets("00").cells(65536,1).end(xlup).row+1
    Worksheets("Analyse").Rows(i).Copy Destination:=Worksheets("00").Rows(j)
    'das jahr 2000

    Case "01"
    j=Worksheets("01").cells(65536,1).end(xlup).row+1
    Worksheets("Analyse").Rows(i).Copy Destination:=Worksheets("01").Rows(j)
    'das Jahr 2001

    'und so weiter

    End Select
    Next i

    Gruß aus'm Pott
    Udo
    http://www.excelerator.de

    P.S. Das Forum lebt auch von den Rückmeldungen der Frager an die Antworter!


      


    Betrifft: Danke von: Thorsten
    Geschrieben am: 29.09.2003 14:54:13

    Hi,

    Udo, die Methode mit Select Case ist klasse, meine nächste Frage wär nämlich gewesen, wie ich die Leerzeilen loswerde, die ich über j erzeuge.
    Super, gleich den nächsten Gedanken mit aufgenommen, so muss dat.
    Gruß aus'm Pott zurück innen Pott.

    Thorsten


      


    Betrifft: Danke von: Thorsten
    Geschrieben am: 29.09.2003 15:03:26

    Hi,

    Udo, die Methode mit Select Case ist klasse, meine nächste Frage wär nämlich gewesen, wie ich die Leerzeilen loswerde, die ich über j erzeuge.
    Super, gleich den nächsten Gedanken mit aufgenommen, so muss dat.
    Gruß aus'm Pott zurück innen Pott.

    Thorsten


     

    Beiträge aus den Excel-Beispielen zum Thema " If- Schleife mit mehreren Anweisungen"