Ich möchte eine leere Zelle aus dem Bereich löschen, T2:T200
indem ich die Daten sicher halte, wenn die Zelle leer ist, ""
oder 1 (=if(b2<>"",1,"")
ohne (=if(b2<>"","safe","")
Verwendung einer Schleife
Sub remove_blankrows()
Range("T2:T200").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Antwort1
Dies erreichen Sie, indem Sie in VBA einen formelbasierten Ansatz verwenden. So löschen Sie Zeilen mit leeren Zellen im Bereich T2:T200, während Zellen mit dem Wert 1 oder „Sicher“ intakt bleiben:
Sub remove_blankrows()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") ' Replace "Sheet1" with your actual sheet name
' Apply the formula to identify rows to delete
ws.Range("U2:U200").Formula = "=IF(OR(T2="""", T2=1, T2=""Safe""), """", ""Delete"")"
' Filter and delete rows based on the formula result
ws.Range("U2:U200").AutoFilter Field:=1, Criteria1:="Delete"
ws.Range("U2:U200").SpecialCells(xlCellTypeVisible).EntireRow.Delete
ws.AutoFilterMode = False
' Clear the temporary formula column
ws.Range("U2:U200").ClearContents
End Sub
- Der Bereich U2:U200 wird als temporäre Spalte verwendet, um eine Formel anzuwenden, die Zeilen basierend auf den Kriterien zum Löschen markiert.
- Die Formel prüft, ob die entsprechende Zelle in Spalte T leer (""), 1 oder "Sicher" ist und gibt eine leere Zeichenfolge ("") zurück, die angibt, dass die Zeile gelöscht werden soll.
- Nach dem Anwenden der Formel richtet der Code einen AutoFilter für die temporäre Spalte ein und filtert nach Zeilen, die als „Löschen“ markiert sind.
- Anschließend werden die sichtbaren Zeilen gelöscht und die temporäre Formelspalte geleert.
- Abschließend wird der AutoFilter ausgeschaltet.