In diesem Tutorial wird gezeigt, wie Sie Zeilen basierend auf Zellwerten löschen oder einfügen.
Zeile basierend auf Zellenwert löschen
Dies durchläuft einen Bereich und löscht Zeilen, wenn Spalte A "Löschen" sagt.
1234567891011121314151617181920 | Unter DeleteRowsBasedonCellValue()'Variablen deklarierenDim LastRow As Long, FirstRow As LongDim Row As LongMit ActiveSheet'Erste und letzte Zeile definierenErste Reihe = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Loop durch Zeilen (von unten nach oben)For Row = LastRow Zu FirstRow Schritt -1If .Range("A" & Row).Value = "delete" Then.Range("A" & Zeile).EntireRow.DeleteEnde WennNächste ReiheEnde mitEnd Sub |
Wir müssen die Schleife mit der unteren Zeile beginnen, da das Löschen einer Zeile die Daten verschiebt und Zeilen überspringt, wenn Sie eine Schleife von oben nach unten durchführen.
Beachten Sie auch, dass wir, anstatt die letzte Zeile manuell einzugeben, die zuletzt verwendete Zeile berechnen.
Zeile löschen – basierend auf Filter
Im vorherigen Beispiel haben wir die Zeilen durchlaufen und jede Zeile gelöscht, die die Kriterien erfüllt. Alternativ können wir den AutoFilter von Excel verwenden, um Zeilen basierend auf einigen Kriterien zu filtern und dann die sichtbaren Zeilen zu löschen:
12345678910111213141516171819202122232425 | Unter FilterAndDeleteRows()'Ws-Variable deklarierenDim ws als ArbeitsblattSet ws = ActiveSheet'Vorhandene Filter zurücksetzenBei Fehler Fortsetzen als nächstesws.ShowAllDataBei Fehler GoTo 0'Filter anwendenws.Range("a1:d100").AutoFilter Field:=1, Criteria1:="delete"'Zeilen löschenApplication.DisplayAlerts = Falsews.Range("a1:d100").SpecialCells(xlCellTypeVisible).LöschenApplication.DisplayAlerts = True'Filter löschenBei Fehler Fortsetzen als nächstesws.ShowAllDataBei Fehler GoTo 0End Sub |
Zeile basierend auf Zellenkriterien löschen
Dies durchläuft einen Bereich und löscht Zeilen, wenn die Zelle in Spalte A bestimmte Kriterien erfüllt (< 0):
1234567891011121314151617181920 | Unter DeleteRowsBasedonCellValue()'Variablen deklarierenDim LastRow As Long, FirstRow As LongDim Row As LongMit ActiveSheet'Erste und letzte Zeile definierenErste Reihe = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Loop durch Zeilen (von unten nach oben)For Row = LastRow Zu FirstRow Schritt -1Wenn .Range("A" & Zeile).Wert < 0 Then.Range("A" & Zeile).EntireRow.DeleteEnde WennNächste ReiheEnde mitEnd Sub |
VBA-Programmierung | Code Generator arbeitet für Sie!
Zeile löschen, wenn Zelle leer ist
Dies durchläuft einen Bereich und löscht eine Zeile, wenn eine Zelle in Spalte A leer ist:
1234567891011121314151617181920 | Unter DeleteRowsBasedonCellValue()'Variablen deklarierenDim LastRow so lang, FirstRow so langDim Row As LongMit ActiveSheet'Erste und letzte Zeile definierenErste Reihe = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Loop durch Zeilen (von unten nach oben)For Row = LastRow Zu FirstRow Schritt -1If .Range("A" & Row).Value = "" Then.Range("A" & Zeile).EntireRow.DeleteEnde WennNächste ReiheEnde mitEnd Sub |
Leere Zeile löschen
Wenn Sie alternativ eine Zeile löschen möchten, wenn die gesamte Zeile leer ist (Klicken Sie auf den Link für eine etwas andere Methode), können Sie diesen Code verwenden:
1234567891011121314151617181920 | Unter LöschenBlankRows()'Variablen deklarierenDim LastRow so lang, FirstRow so langDim Row As LongMit ActiveSheet'Erste und letzte Zeile definierenErste Reihe = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Loop durch Zeilen (von unten nach oben)For Row = LastRow Zu FirstRow Schritt -1Wenn WorksheetFunction.CountA(.Rows(Row)) = 0 Then.Rows(Row).EntireRow.DeleteEnde WennNächste ReiheEnde mitEnd Sub |
Zeile löschen, wenn Zelle Wert enthält
Dies durchläuft einen Bereich und löscht eine Zeile, wenn die Zelle in Spalte A nicht leer ist:
1234567891011121314151617181920 | Unter DeleteRowsBasedonCellValue()'Variablen deklarierenDim LastRow As Long, FirstRow As LongDim Row As LongMit ActiveSheet'Erste und letzte Zeile definierenErste Reihe = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Loop durch Zeilen (von unten nach oben)For Row = LastRow Zu FirstRow Schritt -1Wenn .Range("A" & Zeile).Wert "" Then.Range("A" & Zeile).EntireRow.DeleteEnde WennNächste ReiheEnde mitEnd Sub |
Sind Sie es leid, nach VBA-Codebeispielen zu suchen? Probieren Sie AutoMacro aus!
Zeile basierend auf Zellwert einfügen
Dies durchläuft einen Bereich und fügt Zeilen ein, wenn eine bestimmte Zelle in dieser Zeile "Einfügen" sagt:
1234567891011121314151617181920 | Unter InsertRowsBasedonCellValue()'Variablen deklarierenDim LastRow As Long, FirstRow As LongDim Row As LongMit ActiveSheet'Erste und letzte Zeile definierenErste Reihe = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Loop durch Zeilen (von unten nach oben)For Row = LastRow Zu FirstRow Schritt -1If .Range("A" & Row).Value = "insert" Then.Range("A" & Zeile).EntireRow.InsertEnde WennNächste ReiheEnde mitEnd Sub |