Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bereichanfang/-Ende bestimmen und löschen

Bereichanfang/-Ende bestimmen und löschen
31.05.2008 15:28:00
Peter
Guten Tag
Ich habe eine umfangreiche Tabelle der den Bereich „Daten1“ enthält, aus welchem ich verschiedene Zeilen löschen muss, und zwar diejenigen, bei denen in der Spalte AA „Löschen“ steht.
Zu diesem Zweck trage ich in Spalte Z im ganzen Datenbereich eine fortlaufende Nummer ein und sortiere dann nach Spalte AA. Anschliessend lösche ich alle Zeilen mit der Bezeichnung „Löschen“ in Spalte AA und dann sortiere ich die Daten wieder anhand der fortlaufenden Nummer.
Um den Makro etwas zu beschleunigen, möchte ich nach dem Sortieren nicht Zeile für Zeile löschen, da ja alle Zeilen mit dem Eintrag „Löschen“ in Spalte AA aufeinander folgen.
Wie kann ich den ersten und den letzten Eintrag mit „Löschen“ in Spalte AA bestimmen und dann alle Zeilen auf einmal löschen?
Danke für Hinweise.
Gruss, Peter

Sub Inventar_Finish()
With Worksheets("Inventar")
Selection.AutoFilter Field:=1
Call DurchNummerieren
Range(“Daten1”).Sort Key1:=.Range("AA7"), Order1:=xlAscending, Header:=xlYes
Call Zeilen_entfernen
Range(“Daten1”)..Sort Key1:=.Range("Z7"), Order1:=xlAscending, Header:=xlYes
End With
End Sub



Sub DurchNummerieren()
'Bereich durchnummerieren in Spalte Z (entspricht vor Löschen von Zeilen der Zeilennummer)
Dim c As Variant
Dim x
x = 7
For Each c In Range("Daten1")
If c.Column = 26 Then c.Value = x: x = x + 1
Next
End Sub



Sub Zeilen_entfernen()
Dim i As Long
Application.ScreenUpdating = False
For i = Range("AA65536").End(xlUp).Row To 1 Step -1
If Cells(i, 27).Value = "Löschen" Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereichanfang/-Ende bestimmen und löschen
31.05.2008 16:30:00
Gerd
Hallo Peter,
ich habe unterstellt, dass in "AA1" das Wort "Löschen" nicht vorkommen kann.

Sub Zeilen_entfernen2()
Dim i As Long, e As Long
Application.ScreenUpdating = False
If Cells(Rows.Count, 27).End(xlUp).Row = 1 Then Exit Sub
For i = Cells(Rows.Count, 27).End(xlUp).Row To 1 Step -1
If Cells(i, 27).Value  "Löschen" Then e = i + 1: Exit For
Next i
Rows(CStr(e) + ":" + CStr(Cells(Rows.Count, 27).End(xlUp).Row)).Delete
Application.ScreenUpdating = True
End Sub


Gruß Gerd

AW: Bereichanfang/-Ende bestimmen und löschen
02.06.2008 08:49:00
Peter
Hallo Gerd
Vielen Dank für deine Antwort.
Nachdem ich nach jeder Zeile in Spalte AA mit Inhalt "Löschen" gelöscht habe und du dann noch die Zellen abgearbeitet hast, um den Bereich zu bestimmen (wie ich das gewünscht habe), ist mir nun noch eingefallen, dass ich es noch einfacher machen kann, da nebst "Löschen" keine anderen Einträge in Spalte AA enthalten sind (was man aus meiner Frage nicht zwingend entnehmen konnte).
Gruss, Peter
A = Range("AA1").End(xlDown).Row 'erste Zeile mit "Löschen", falls überhaupt
Z = Range("AA65536").End(xlUp).Row 'letzte Zeile mit "Löschen" falls überhaupt
Select Case Z - A
Case Is >= 0
Rows(A & ":" & Z).Delete
Case Is Case Else
End Select
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige