Anzeige
Archiv - Navigation
1504to1508
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

Lösche Zeilen mir For/Next/If/Else Schleife

Lösche Zeilen mir For/Next/If/Else Schleife
28.07.2016 14:03:17
Sebastian
Hallo zusammen,
ich versuche die Problemstellung mal so verständlich wie möglich zu erklären:
Ich will einen Datensatz (variiert von Monat zu Monat) in ein Tabellenblatt einfügen und alle Zeilen löschen lassen die ich nicht brauche (Bezugspunkte sind Zellen in Spalte A).
Die Bedingungen sind eigentlich ganz schnell erklärt, eine Zeile soll gelöscht werden, wenn der Wert in der Bezugszelle folgende Bedingungen nicht erfüllt:
1.) Value = "Summe "
2.) Value > 1000 (Tabellenblatt "Tabelle1" meine ich Werte wie 2032, 2035, 2072 usw.)
3.) Value Like StrLiefNr (Der Wert soll dem String ähnlich sein, es gibt nämlich auch Zellenwerte mit dem String-Wert + ein Index wie A/B/C... hinten dran)
Hoffe ich habe es einigermaßen verständlich erklärt, natürlich habe ich mich schon an einer Lösung versucht, es funktioniert aber leider nicht so wie ich mir das vorstelle. Mein Code löscht lediglich Zeilen, wenn die Bezugszelle leer ist :( Hier der Code, ich hoffe mir kann jemand helfen:
Sub Überflüssige_Zeilen_Löschen()
Dim IntLetzteZelleSpalteA As Integer
Dim IntZaehlerSpalteA As Integer
Dim StrSumme As String
Dim StrAZ As String
Dim StrLieferNr As String
Sheets("Tabelle1").Select
StrSumme = "Summe "
'StrAZ = ["*A-Z*"]
StrLieferNr = Sheets("Tabelle2").Range("A1")
With ActiveSheet
IntLetzteZelleSpalteA = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
For IntZaehlerSpalteA = 2 To IntLetzteZelleSpalteA
If _
Sheets("Tabelle1").Cells(IntZaehlerSpalteA, 1).Value = StrSumme Or _
Sheets("Tabelle1").Cells(IntZaehlerSpalteA, 1).Value > 1000 Or _
Sheets("Tabelle1").Cells(IntZaehlerSpalteA, 1).Value Like StrLieferNr Then
'Falls Bed. erfüllt mache nichts und gehe weiter zu Next
Else
Sheets("Tabelle1").Rows(IntZaehlerSpalteA).Select
Selection.Delete
IntZaehlerSpalteA = IntZaehlerSpalteA - 1
End If
Next
End Sub
Hier geht's zur Datei:
https://www.herber.de/bbs/user/107294.xlsm
Vielen Dank im Voraus!
Beste Grüße
SZ

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lösche Zeilen mir For/Next/If/Else Schleife
28.07.2016 14:22:49
Daniel
Hi
Löschen per Schleife ist in VBA seit Excel 2007 eigentlich unnötig, weil aufwendig zu Programmieren und recht langsam.
einfacher und viel schneller ist folgendes Vorgehen:
1. Schreibe in die erste freie Spalte am Tabellenende eine Formel, welche alle Zeilen, die gelöscht werden sollen mit 0 kennzeichnet und alle die stehen bleiben müssen mit der aktuellen Zeilennummer
2. schreibe in die Zeile 1 der Hilfsspalte (Überschrift) ebenfalls die 0
3. Wende auf die ganze Tabelle die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN an, mit der Hilfsspalte als Kriterium und der Option: keine Überschrift
4. Lösche die Hilfsspalte
kann man von Hand ausführen, aber auch per VBA (der Recorder ist dein Freund)
ansonsten, vielleicht zum bessseren Verständnis deines Problems.
markiere in der Beispieldatei mal alle Zeilen, die gelöscht werden sollen.
ansonsten noch ein paar Anmerkungen zu deinem Code:
1. lass die Schleife rückwärts laufen, das spart die Manipulation am Schleifenzähler und reduziert damit die anzahl der Schleifenumläufe
2. selektiere nicht, sondern bearbeite die Zellen direkt:
schlecht ist:
Sheets("Tabelle1").Rows(IntZaehlerSpalteA).Select
Selection.Delete

besser ist:
Sheets("Tabelle1").Rows(IntZaehlerSpalteA).Delete
3. auch LIKE prüft wie "=" auf genaue Übereinstimmung. Wenn man mit LIKE auf "Ähnlichkeiten" wie "beginnt mit", "endet mit", "enthält" prüfen will, muss man die üblichen Jokerzeichen einsetzen:
"123 A" like "123" ergibt FALSCH
"123 A" like "123*" ergibt WAHR.
Gruß Daniel
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige