Microsoft Excel

Herbers Excel/VBA-Archiv

Zeilen löschen wenn Wert gefunden

Betrifft: Zeilen löschen wenn Wert gefunden von: Andreas Müller
Geschrieben am: 12.08.2008 12:24:20

Hallo Herbergemeinde,

ich habe am 05.08.2008 einen Makro
den Rudi für mich geändert hat getestet, hat das was er sollte auch ausgeführt,
leider musste ich jetzt feststellen, bei einer größeren Datenmenge löscht er nicht mehr alles,
die Zeile wo ich es bemerkt habe ist 1356, in der Zeile 465 hat er noch gelöscht was er sollt,
woran kann das liegen,

hier der Makro

er soll einen wert wenn er diesen gefunden hat auch die zeile zu vor löschen, gleich welcher wert darin steht,
z.B. zu löschender wert in zeile 18 gefunden zeile 18 löschen und auch zeile 17 gleich welcher wert in hier steht,



Sub storückzeilenloeschen()
  Dim lz As Long, z As Long, rngDel As Range
  With ActiveSheet
      lz = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
      For z = lz To 1 Step -1
          Select Case .Cells(z, 10)
              Case 1 To 7
                If rngDel Is Nothing Then
                  Set rngDel = .Range(.Cells(z - 1, 1), .Cells(z, 1))
                Else
                  Set rngDel = Union(rngDel, .Range(.Cells(z - 1, 1), .Cells(z, 1)))
                End If
          End Select
      Next z
  End With
  If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
End Sub


  

Betrifft: AW: Zeilen löschen wenn Wert gefunden von: Daniel
Geschrieben am: 12.08.2008 12:41:08

Hi
das könnte zum beispiel daran liegen, daß in einer Range-Variablen nur eine begrenze Anzahl von Zellbereichen zusammengefasst werden können. (ein Zellbereich ist immer ein bereich, der mit "Zelle oben links - Zelle unten rechts" beschrieben werden kann)

bei grösseren Datenmengen ist immer folgende Vorgehensweise ratsam:
- Hilfsspalte einfügen mit Formel die folgendes ergebnis hat:
bei zu löschenden Zeilen ein Blank
bei nicht zu löschenden Zeilen die Zeilen-Nr
- in Hilfsspalte Formeln durch Werte ersetzen
- Tabelle nach Hilfsspalte sortieren
- zu löschende Zeilen mit mit BEARBEITEN - GEHE ZU - INHALTE LEERZELLEN markieren und löschen

durch die Sortierung stehen alle zu löschenden Zeilen direkt als ein Zellbereich untereinander und somit ist spielt die Datenmenge keine Rolle mehr. Auch von der Verabeitungsgeschwindigkkeit wirst du kaum ein schnellers Makro finden.
ein entsprechedes Makro hatte ich glaube ich in dem Tread gepostet.

Gruß, Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Zeilen löschen wenn Wert gefunden"