Das Hinzufügen und Löschen von Zeilen gehört zu den alltäglichen Aufgaben bei der Arbeit mit Excel.
Während Sie dies einfach über das Arbeitsblatt selbst erledigen können, möchten Sie manchmal den VBA-Weg nutzen, um Zeilen in Excel zu löschen. Dabei kann es sich um das Löschen einer bestimmten Zeile handeln, um mehrere Zeilen in der Auswahl, um das Löschen alternativer Zeilen oder um solche, die einen bestimmten Wert enthalten.
In diesem Tutorial zeige ich Ihnen, wie Sie Zeilen in Excel mit VBA löschen können (mehrere Szenarien).
Lassen Sie uns also loslegen!
Dieses Tutorial deckt ab:
Eine ganze Zeile mit VBA löschen
Um eine ganze Zeile in Excel mit VBA zu löschen, müssen Sie die Methode EntireRow.Delete-Methode verwenden.
Wenn Sie zum Beispiel die gesamte erste Zeile in einem Arbeitsblatt löschen möchten, können Sie den folgenden Code verwenden:
Sub DeleteEntireRow()Rows(1).EntireRow.DeleteEnd Sub
Der obige Code gibt zunächst die zu löschende Zeile an (was durch die Angabe der Nummer in Klammern geschieht) und verwendet dann die EntireRow.Delete-Methode, um sie zu löschen.
Sie können auch mehrere Zeilen löschen, indem Sie diese Zeilen im Code angeben.
Zum Beispiel löscht der folgende Code die Zeilen Nummer 1, 5 und 9 im Arbeitsblatt:
Sub DeleteEntireRow()Rows(9).EntireRow.DeleteRows(5).EntireRow.DeleteRows(1).EntireRow.DeleteEnd Sub
Der obige Code verwendet dieselbe Logik, wobei er die Zeilennummern angibt und Excel diese Zeilen nacheinander löscht.
Alle Zeilen in der Auswahl löschen
Wenn Sie alle Zeilen in einem markierten Bereich von Zellen löschen möchten, können Sie den folgenden VBA-Makrocode verwenden:
Sub DeleteEntireRow()Selection.EntireRow.DeleteEnd Sub
Der obige Code wendet die Methode EntireRow.Delete-Methode auf die gesamte Auswahl an.
Abwechselnde Zeilen löschen (oder jede dritte/vierte/nte Zeile löschen)
Manchmal kann es vorkommen, dass Sie einen Daten-Dump erhalten, bei dem jede zweite Zeile (oder dritte, vierte oder n-te Zeile) nutzlos ist und gelöscht werden muss.
Ich habe früher mit Finanzdaten gearbeitet, bei denen jede zweite Zeile leer war und gelöscht werden musste.
Das ist die Art von Szenario, bei der VBA wirklich glänzt.
Nachfolgend finden Sie den VBA-Code, der durch alle Zeilen in der Auswahl geht und jede zweite Zeile löscht:
Sub DeleteAlternateRows()RCount = Selection.Rows.CountFor i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.DeleteNext iEnd Sub
Lassen Sie mich erklären, wie dieser VBA-Code funktioniert.
Zuerst habe ich eine Variable RCount verwendet, um die Gesamtzahl der Zeilen in der Auswahl zu erhalten.
Dann habe ich eine For Next-Schleife verwendet, um dies so oft auszuführen, wie viele Zeilen vorhanden sind. Wenn zum Beispiel 12 Zeilen vorhanden sind, wird diese Schleife von 12 bis 1 (also 12 Mal) durchlaufen. Es ist wichtig, dies von der letzten Zeile in der Auswahl bis zur ersten auszuführen, da wir nicht wollen, dass sich die Zeilennummern ändern, wenn eine Zeile gelöscht wird.
Auch Schritt -2 wird verwendet, da wir jede zweite Zeile löschen müssen (von unten nach oben). Falls Sie jede dritte Zeile löschen wollen, können Sie -3 verwenden.
Innerhalb der VBA-Schleife habe ich die Methode Selection.Rows(i).EntireRow.Delete verwendet, um jede zweite Zeile zu löschen.
Leere Zeilen mit VBA löschen
Sie können auch die Methode EntireRow.Delete-Methode verwenden, um alle leeren Zeilen zu löschen.
Nachfolgend finden Sie den VBA-Code, der leere Zellen im ausgewählten Datensatz auswählt und die gesamte Zeile löscht.
Sub DeleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).EntireRow.DeleteEnd Sub
Der obige Code verwendet die Eigenschaft SpecialCells, um alle leeren Zellen auszuwählen und zu löschen. Dies ist die gleiche Methode, mit der wir auch das Dialogfeld „Gehe zu Spezial“ verwenden können, um alle leeren Zellen auszuwählen.
Nachdem diese leeren Zellen mit SpecialCell identifiziert wurden, werden sie mit der Methode EntireRow.Delete gelöscht.
Zeilen mit einem bestimmten Wort/Wert löschen
Sie können auch einen einfachen VBA-Code verwenden, um jede Zelle im ausgewählten Bereich durchzugehen und alle Zeilen zu löschen, in denen eine Zelle einen bestimmten Text oder Wert enthält.
Angenommen, Sie haben einen Datensatz und ich möchte alle Zellen löschen, die in Spalte 2 der Auswahl den Text Drucker enthalten.
Unten ist der Code, der dies tut:
Sub DeleteRowswithSpecificValue()For i = Selection.Rows.Count To 1 Step -1If Cells(i, 2).Value = "Printer" ThenCells(i, 2).EntireRow.DeleteEnd IfNext iEnd Sub
Der obige Code zählt zunächst die Gesamtzahl der Zeilen in der Auswahl. Damit wird sichergestellt, dass die Schleife nur so oft durchlaufen wird. Dann wird die ‚For Next-Schleife‘ verwendet, um alle Zellen in Spalte 2 durchzugehen.
Die IF THEN ELSE-Anweisung wird dann verwendet, um den Wert in jeder Zelle in Spalte 2 zu überprüfen. Und falls der Wert/Text mit dem angegebenen Text übereinstimmt (der in diesem Beispiel ‚Drucker‘ ist).
In diesem Beispiel habe ich geprüft, ob der Text mit einer bestimmten Zeichenfolge übereinstimmt oder nicht. Sie können dies auch mit Werten tun. Sie können zum Beispiel alle Zeilen löschen, bei denen der Verkaufswert kleiner als 1000 oder größer als 1000 ist.
Hinweis: Wichtig ist hier, dass die Schleife von Selection.Rows.Count bis 1 läuft, um sicherzustellen, dass das Löschen einer Zeile keine Auswirkungen auf die darüber liegenden Zeilen hat.
Wie Sie diesen VBA-Code verwenden
Nun möchte ich Ihnen zeigen, wie Sie alle in diesem Tutorial erwähnten Codes verwenden können, um die gesamte Zeile zu löschen.
Sie müssen diese Codes kopieren und in ein Modul in Excel VB Editor einfügen. Sobald Sie diese Codes kopiert haben, können Sie die Makrocodes ausführen.
Nachfolgend finden Sie die Schritte zum Kopieren und Einfügen dieser VBA-Codes in ein Modul:
- Halten Sie die ALT-Taste gedrückt und drücken Sie die Taste F11 (oder Funktion + Option + F11 bei Mac). Dadurch wird der VB-Editor geöffnet
- Im VB-Editor haben Sie links den Projekt-Explorer. Wenn Sie ihn nicht sehen, gehen Sie auf die Option Ansicht und klicken Sie auf Projekt-Explorer.
- Klicken Sie mit der rechten Maustaste auf ein beliebiges Objekt im Projekt-Explorer (für die Arbeitsmappe, in der Sie den Code ausführen möchten).
- Gehen Sie auf Einfügen und klicken Sie dann auf Modul. Dadurch wird ein neues Modul für die Arbeitsmappe eingefügt.
- Kopieren und Einfügen der obigen Codes in das Modul.
Und um diese Codes auszuführen, können Sie den Cursor an eine beliebige Stelle des Codes (den Sie ausführen möchten) setzen und die F5-Taste drücken (oder auf das grüne Dreieck in der VBA-Symbolleiste klicken).
Ich habe auch ein detailliertes Tutorial über verschiedene Möglichkeiten, VBA-Makrocodes in Excel auszuführen, geschrieben.
So, das waren einige VBA-Codes, die Sie zum Löschen ganzer Zeilen in Excel (in verschiedenen Szenarien) verwenden können. Die gleiche Logik können Sie auch anwenden, wenn Sie Spalten statt Zeilen löschen möchten (mit der entsprechenden Anpassung in den Code-Beispielen).
Hoffentlich fanden Sie dieses Tutorial nützlich!
Die folgenden Excel-Tutorials könnten Ihnen auch gefallen:
- Excel VBA Autofilter: Eine komplette Anleitung mit Beispielen
- Zeilen auf Basis eines Zellwerts (oder einer Bedingung) in Excel löschen
- Einfügen einer leeren Zeile nach jeder Zeile in Excel (oder jeder N-ten Zeile)
- Schnelles Ausblenden von SPALTEN in Excel