Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1048to1052
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleife funktioniert falsch II

Schleife funktioniert falsch II
11.02.2009 20:21:00
ioannis
Hallo zusammen,
es geht um eine einfache Aufgabe: Die Daten sollen nach zwei Kriterien gefiltert werden (Spalte C und D), daraus soll die Zeile mit der min. Wert in der Spalte J gefunden und in eine andere Tabelle kopiert werden. Hier der Code:

Sub Filtern()
Application.ScreenUpdating = False
zeile = 1
For i = 22 To 30
For j = 38 To 67
ena = "C" & i
duo = "P'" & j
With Sheets("Tabelle2").UsedRange
.AutoFilter Field:=3, Criteria1:=ena
.AutoFilter Field:=4, Criteria1:=duo
.AutoFilter Field:=10, Criteria1:=WorksheetFunction.Min(Columns(10))
.CurrentRegion.SpecialCells(xlCellTypeVisible).EntireRow.Copy _
Worksheets("Tabelle1").Cells(zeile, 1)
End With
zeile = zeile + 1
Next
Next
ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True
End Sub



Problem: Die Schleifen funktionieren nicht richtig, er bleibt bei C22, P'38.
(Gestern habe ich vom Forum einen ersten Hinweis dankend angenommen, die Criteria1 zählen aber einfach nicht hoch)
Freundliche Grüße
Ioannis

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife funktioniert falsch II
11.02.2009 20:35:00
Fred
Hi,
poste den Code doch in Schriftart Wingdings, dann ist er besser lesbar.
Vor Columns(10) fehlt ein Punkt.
mfg Fred
AW: Schleife funktioniert falsch II
11.02.2009 20:47:00
ioannis
  • 
    Sub Filtern()
    Application.ScreenUpdating = False
    zeile = 1
    For i = 22 To 30
    For j = 38 To 67
    ena = "C" & i
    duo = "P'" & j
    With Sheets("Tabelle2").UsedRange
    .AutoFilter Field:=3, Criteria1:=ena
    .AutoFilter Field:=4, Criteria1:=duo
    .AutoFilter Field:=10, Criteria1:=WorksheetFunction.Min(Columns(10))
    .CurrentRegion.SpecialCells(xlCellTypeVisible).EntireRow.Copy _
    Worksheets("Tabelle1").Cells(zeile, 1)
    End With
    zeile = zeile + 1
    Next
    Next
    ActiveSheet.AutoFilterMode = False
    Application.ScreenUpdating = True
    End Sub
    


  • ...ich bin mir nicht sicher ob Du es so meintest (was ist Wingdings?)
    Gruß
    ioannis
    Anzeige
    AW: Schleife funktioniert falsch II
    11.02.2009 21:07:00
    Daniel
    Hi
    ich habs mal soweit wie möglich getestet, aber die Schleifen laufen bei mir normal durch, diesbezüglich kann ich keinen Fehler entdecken.
    Lad doch mal deine Datei hoch.
    außerdem solltest du dringend das hier lesen:
    http://www.online-excel.de/excel/singsel_vba.php?f=4
    Gruß, Daniel
    AW: Schleife funktioniert falsch II
    11.02.2009 21:28:00
    ioannis
    Hallo Daniel,
    https://www.herber.de/bbs/user/59366.xls.
    Ist ja ein wenig vereinfacht ja, da ich die richtige Datei nicht jetzt bei mir habe. Mit oder ohne punkt vor Columns(10) funktioniert es nicht. Wenn ich die Zeile auskommentiere, die Schleife zählt nicht hoch...
    Danke und Gruß
    Ioannis
    Anzeige
    AW: Schleife funktioniert falsch II
    11.02.2009 22:10:00
    Daniel
    HI
    ich weiß ja nicht, wie weit du deine Datei vereinfacht hast, aber bei mir hast du folgendes Problem:
    - du versuchst, das Autofilterfeld 10 zu verwenden, aber ein Angegebener Zellbereich (Tabelle1.Usedrange) hat nur 8 Spalten
    die Spaltenzählung innerhalb der Usedrange oder des Autofilterbereichs bezieht sich immer relativ zur 1. spalte des Bereichs und nicht zur Spalte A !!!.
    da bei dir die Spalten A und B komplett leer sind, beginnt die Usedrange und der Autofilter erst in Spalte C, somit hast du nur 8 und nicht 10 Spalten in deinem Autofilter und in deiner UsedRange.
    Gruß, Daniel
    Anzeige
    AW: Schleife funktioniert falsch II
    11.02.2009 22:19:00
    ioannis
    Hallo Daniel,
    ich wußte das ja (auch) nicht. Ich hab einfach Spalte A mit Daten gefüllt, das Hauptproblem bleibt: Mein Ergebnis in der tabelle2 lautet C22 P'38 45 (drei gleichen Zeilen nacheinander) !?!
    MfG
    ioannis
    AW: Schleife funktioniert falsch II
    11.02.2009 22:23:00
    Daniel
    Hi
    dann lade doch bitte mal deine möglichst Vollständige Datei hier hoch und beachte bitte voher den Link, den ich dir geschickt habe. Ohne das OPTION EXPLICIT zukünftig über deinen Makro steht, werde ich mir diese nicht mehr anschauen.
    Gruß, Daniel
    AW: Schleife funktioniert falsch II
    11.02.2009 22:40:00
    ioannis
    Hallo,
    https://www.herber.de/bbs/user/59370.xls
    Mit nur vier Variablen, denke ich nicht dass die Deklaration so eine wichtige Rolle spielt. Zu Hause habe ich Excel 2003, noch etwas relevantes fällt mir dazu nicht ein...
    MfG
    Ioannis
    Anzeige
    AW: Schleife funktioniert falsch II
    11.02.2009 23:12:00
    Daniel
    nja, grad wenns nur 4 Variablen sind, sollte es keine Mühe machen, diese zu deklarien.
    außerdem gibts genügen Gründe IMMER mit Option Explicit zu arbeiten.
    das Problem mit dem mitkopieren der Überschrift hab ich in meinem anderen Beitrag schon beschrieben.
    das 2 Problem im Code ist, daß du die Zeile im Code immer nur um 1 nach oben zählst.
    besteht jetzt das Filterergebnis aus mehreren Zeilen, so bleibt natürlich nur die erste Zeile stehen, die weiteren werden beim nächsten Kopiervorgang überschrieben.
    Da die erste Kopierte Zeile bei dir immer die Überschrift (Zeile 1) ist, ist es kein Wunder, daß die Schleife so aussieht, als würde sie nicht hochzählen und immer nur die gleichen Werte reinschreiben.
    Wenn man Daten an eine bestehende Tabelle unten anfügen will, dann solltest du den Wert für Zeile auf folgende Weise bestimmen:
    
    Zeile = Sheets("Tabelle2").Cells(65536, 3).end(xlup).row + 1
    


    als Spaltennummer solltest du eine Spalte auswählen, die immer Werte enthält, so daß deren Letze Zeile auch für die ganze Tabelle die letzte Zeile ist.
    gruß, Daniel

    Anzeige
    AW: Schleife funktioniert falsch II
    11.02.2009 23:28:00
    ioannis
    Hallo Daniel,
    danke nochmal für die ausführlichen Hinweise. Ich bin der Meinung, dass das Problem irgendwo anders liegt. Wenn er einfach überschreiben würde, dann wäre das Ergebnis C24 P'38 89. Wenn es bei Dir aber funktioniert, bin ich immer noch erstaunt...
    MfG
    ioannis
    AW: Schleife funktioniert falsch II
    11.02.2009 23:58:00
    Daniel
    Hi
    wenn du meine Hinweise beachtest, funktioniert der Code schon.
    die Frage ist, ob deine Logik richtig durchdacht ist.
    wegen:
    
    .AutoFilter Field:=10, Criteria1:=WorksheetFunction.Min(.Columns(10))
    


    ist das Ergebnis immer:

    
    C22 P'38 23
    


    weil 23 die kleinste Zahl in Spalte 10 ist und immer als Filterkriterium herangezogen wird.
    Gruß, Daniel

    Anzeige
    AW: Schleife funktioniert falsch II
    12.02.2009 00:02:00
    ioannis
    Dann meine eigentliche Frage lautet (einfach?), wie bekomme ich die kleinste Zahl aus einer schon gefilteter Liste (nach den ersten beiden Kriterien)?
    MfG
    ioannis
    AW: Schleife funktioniert falsch II
    12.02.2009 00:10:00
    Daniel
    Hi
    als Tip: die dazu notwendige Funktion hast du an anderer Stelle im Code bereits verwendet.
    vielleicht kommst du ja von alleine drauf.
    Gruß, Daniel
    AW: Schleife funktioniert falsch II
    12.02.2009 00:18:00
    ioannis
    OK, ich tue mein Bestes...
    MfG
    Ioannis
    AW: Schleife funktioniert falsch II
    11.02.2009 22:45:00
    Daniel
    Hi
    ach so, was mir grad so eingefallen ist:
    auch wenn der Autofilter so definiert ist, daß alle Zeilen ausgeblendet werden, wird die erste Zeile (die wo die DropDownButtons drin sind) nie ausgeblendet, weil das für Excel die Überschriftenzeile ist.
    wenn du jetzt mit
    
    ...Usedrange.SpecialCells(xlcelltypeVisible).copy
    


    agierst, dann kopierst du auf jeden Fall Immer die Überschriftenzeile mit, auch wenn das Filterergebnis leer ist.
    das kann man so verhindern:

    
    ...Usedrange.Offset(1,0).Specialcells(xlcelltypeVisible).Copy
    


    btw in deinem Code ist das CurrentRegion überflüssig, da du den benutzen Zellbereich schon mit WITH Sheets("Tabelle1").USEDRANGE ausreichen definiert hast.
    Gruß, Daniel

    Anzeige
    AW: Schleife funktioniert falsch II
    11.02.2009 23:00:00
    ioannis
    Danke Daniel,
    das sieht schon mal besser aus, aber die Schleife funktioniert immer noch nicht (!?!). Ergebnis (nur eine Zeile):
    er C22 P'38 23...
    MfG
    Ioannis

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige