
Ich versuche herauszufinden, wie ich in Excel 2013 eine Zeile lösche, deren Zelleninhalt mit einer Zahl beginnt.
Z. B. stehen in Spalte HI mehrere Einträge, manche beginnen mit Buchstaben, manche mit Zahlen. Ich möchte alle Zeilen löschen, deren Zellinhalt in Spalte H mit einer Zahl beginnt.
Wir sind für jede Anleitung/jeden Rat dankbar!
Ok, ich habe also ein bisschen VBA-Code erstellt, der auf einem einzelnen Blatt zu funktionieren scheint:
Sub Macro_01()
Dim L As Long, i As Long
L = Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
If Left(Cells(i, "F"), 1) Like "[0-9]" Or Cells(i, "F") = "" Then
Rows(i).Delete
End If
Next
End Sub
Ich versuche herauszufinden, wie ich das auf allen 284 Blättern im Arbeitsbuch zum Laufen bekomme. Ich habe Do/Loop ausprobiert, aber es läuft einfach endlos (und reagiert nicht mehr). Da ich weiß, wie viele Blätter es gibt, gibt es einen einfachen Befehl, den ich in den Code eingeben muss?
Antwort1
Wie funktioniert das? (Ich gehe davon aus, dass der von Ihnen gepostete Code selbst wie erwartet funktioniert und nur ausgeführt werden mussalleBlätter.)
Sub Macro_01()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim L As Long, i As Long
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
L = .Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
If Left(.Cells(i, "F"), 1) Like "[0-9]" Or .Cells(i, "F") = "" Then
.Rows(i).Delete
End If
Next
Next ws
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Gehen Sie einfach jedes Blatt durch und stellen Sie sicher, dass die letzte Zeilenvariable zurückgesetzt wird. Schalten Sie dann die Berechnung/Bildschirmaktualisierung bis zum Ende aus. Beachten Sie, dass dies bei mehr als 200 Blättern tatsächlich einige Zeit dauern kann.
Stellen Sie abschließend sicher, dass Sie dies zunächst auf einer Kopie Ihrer Daten ausführen, da Sie, wie Sie vielleicht wissen, ein Makro nicht rückgängig machen können.
Antwort2
Vielen Dank für Ihre bisherige Hilfe, ich glaube, ich habe es gelöst:
Sub Macro_01()
ActiveSheet.Next.Select
Do
Dim L As Long, i As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
L = Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
If Left(Cells(i, "F"), 1) Like "[0-9]" Or Cells(i, "F") = "" Then
Rows(i).Delete
End If
Next
Next ws
If ActiveSheet.Index <> Sheets.Count Then
ActiveSheet.Next.Select
Else
Exit Do
End If
Loop
End Sub