Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile löschen, wenn in Spalte A best. Wert enthalt

Zeile löschen, wenn in Spalte A best. Wert enthalt
27.06.2006 18:36:10
Peter
Guten Abend
Ich suchen einen Makro, der mir in jeder Tabelle einer beliebigen Datei alle Zeilen löscht, die in Spalte A einen bestimmten Eintrag, z.B. die Zahl 1 enthält.
Das Herzstück dazu fehlt mir. Wie muss untenstehender Code ergänzt werden (=Definition, nach welchem Eintrag in Spalte A gesucht wird und dann der entsprechende Löschbefehl.
Danke für jede Unterstützung.
Peter

Sub Zeile_loeschen()
Dim x As Byte, zelle, Bereich$, ende$, neu$
For x = 1 To Sheets.Count
ende = Sheets(x).Range("A1").Cells(Rows.Count, 1).End(xlUp).Address
Bereich = "A1:" & ende
with Zelle
BEDINGUNG, WELCHE Zeilen gesucht werden;
LOESCHBEFEHL (Delete entire.row ?)
End With
Next
Next x
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile löschen, wenn in Spalte A best. Wert ent
27.06.2006 19:15:35
P@ulchen
Hallo Peter,
folgender Code prüft in allen Blättern der aktuellen Mappe die Spalte "A" auf den Eintrag "löschen" und löscht bei Übereinstimmung die entsprechenden Zeilen:


Option Explicit
Sub Zeile_loeschen()
Dim x As Integer
Dim ende, iRow As Long
For x = 1 To Sheets.Count
    ende = Sheets(x).Cells(Rows.Count, 1).End(xlUp).Row
    For iRow = ende To 1 Step -1
        If Sheets(x).Cells(iRow, 1) = "löschen" Then Sheets(x).Rows(iRow).Delete
    Next iRow
Next x
End Sub


Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

Anzeige
AW: Zeile löschen, wenn in Spalte A best. Wert ent
28.06.2006 08:24:11
Peter
Hallo P@ulchen
Vielen Dank für den Code. Dieser funktioniert, mit Ausnahme von "Extremsituationen". Wenn ich beispielsweise in Feld A65536 (also auf der letzten Zeile) den Eintrag mache, wird diese Zeile nicht entfernt.
Wenn ich den Eintrag in Feld A65535 und A65536 mache, wird beim Ablaufen des Makros nur die Zeile 65536 gelöscht; beim zweiten Ablaufen wird dann die Zeile 65535 gelöscht.
Wie kann dieser "Schönheitsfehler" behoben werden?
Danke für Feedback.
Peter
Anzeige
AW: Zeile löschen, wenn in Spalte A best. Wert ent
29.06.2006 09:08:35
Peter
Hallo P@ulchen
ich werde die Frage in einen neuen Thread stellen, da wohl die Beantwortung etwas wahrscheinlicher ist.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel löschen, wenn bestimmte Werte vorhanden sind


Schritt-für-Schritt-Anleitung

Um in Excel Zeilen zu löschen, die einen bestimmten Wert in Spalte A enthalten, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.

  3. Kopiere den folgenden Code in das Modul:

    Sub Zeile_loeschen()
       Dim x As Integer, iRow As Long, ende As Long
       For x = 1 To Sheets.Count
           ende = Sheets(x).Cells(Rows.Count, 1).End(xlUp).Row
           For iRow = ende To 1 Step -1
               If Sheets(x).Cells(iRow, 1).Value = "löschen" Then
                   Sheets(x).Rows(iRow).Delete
               End If
           Next iRow
       Next x
    End Sub
  4. Ändere den Suchbegriff „löschen“ in den gewünschten Begriff, den Du verwenden möchtest.

  5. Führe das Makro aus: Drücke F5 oder gehe zurück zu Excel und führe das Makro aus.


Häufige Fehler und Lösungen

  • Problem: Letzte Zeile wird nicht gelöscht.

    • Lösung: Stelle sicher, dass das Makro von der letzten Zeile nach oben arbeitet. Der Code oben verwendet Step -1, was dies sicherstellt.
  • Problem: Das Makro löscht nicht alle Zeilen mit dem Suchbegriff.

    • Lösung: Überprüfe, ob der Suchbegriff genau übereinstimmt, einschließlich Groß-/Kleinschreibung und Leerzeichen.

Alternative Methoden

Wenn Du VBA nicht verwenden möchtest, kannst Du auch die Filterfunktion in Excel nutzen:

  1. Markiere Deine Daten.
  2. Gehe zu „Daten“ > „Filter“.
  3. Klicke auf den Dropdown-Pfeil in Spalte A und wähle „Textfilter“ > „Enthält“.
  4. Gib den Suchbegriff ein und klicke auf „OK“.
  5. Markiere die gefilterten Zeilen, klicke mit der rechten Maustaste und wähle „Zeilen löschen“.
  6. Entferne den Filter, um alle Daten wieder anzuzeigen.

Praktische Beispiele

Beispiel 1: Löschen aller Zeilen, die „ent“ in Spalte A enthalten.

If InStr(1, Sheets(x).Cells(iRow, 1).Value, "ent") > 0 Then
    Sheets(x).Rows(iRow).Delete
End If

Beispiel 2: Löschen aller leeren Zeilen in Spalte A.

If IsEmpty(Sheets(x).Cells(iRow, 1).Value) Then
    Sheets(x).Rows(iRow).Delete
End If

Tipps für Profis

  • Verwende die Application.ScreenUpdating = False und True Befehle, um die Leistung beim Löschen vieler Zeilen zu verbessern.

    Application.ScreenUpdating = False
    ' Dein Löschcode
    Application.ScreenUpdating = True
  • Experimentiere mit Find und Replace, um spezifische Inhalte in Zellen zu löschen, ohne das gesamte Makro zu verwenden.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Suchbegriffe verwenden?
Du kannst die If-Bedingung erweitern, um mehrere Begriffe zu überprüfen, z.B.:

If Sheets(x).Cells(iRow, 1).Value = "löschen" Or Sheets(x).Cells(iRow, 1).Value = "ent" Then
    Sheets(x).Rows(iRow).Delete
End If

2. Gibt es eine Möglichkeit, nur bestimmte Blätter zu bearbeiten?
Ja, Du kannst die Schleife anpassen, um nur die gewünschten Blätter auszuwählen. Beispielsweise:

If Sheets(x).Name = "DeinBlattName" Then
    ' Löschcode
End If

3. Was ist, wenn ich nur bestimmte Zellen in einer Zeile löschen möchte?
Verwende Sheets(x).Cells(iRow, Spalte).ClearContents, um den Inhalt einer bestimmten Zelle zu löschen, anstatt die gesamte Zeile zu entfernen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige