Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

wenn Bedingung nicht erfüllt,ganze Zeile löschen

Forumthread: wenn Bedingung nicht erfüllt,ganze Zeile löschen

wenn Bedingung nicht erfüllt,ganze Zeile löschen
22.01.2003 08:40:13
Juliane
Wer kann mir helfen ?
Mein Problem: Ich habe eine Exel - Tabelle mit vielen Zeilen und Spalten. Daten sind bereits eingetragen.
Ich möchte nun, daß, wenn in einer Zeile eine bestimmte Bedingung nicht erfüllt ist( ein bestimmtes Kriterium mit der Vorgabe nicht übereinstimmt), daß dann die ganze Zeile gelöscht wird.
Wie programmiere ich das ?
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: wenn Bedingung nicht erfüllt,ganze Zeile löschen
22.01.2003 08:46:36
Bernd Held
Hallo Juliane,

für diesen Zweck musst Du ein Makro einsetzen, dass wie folgt lauten könnte:

Sub NichtEmailAdressenEntfernen()
Range("A1").Select

Do Until ActiveCell.Value = ""
If ActiveCell.Value <> "Test" Then
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.EntireRow.Delete
End If
Loop
End Sub

Viele Grüße
Bernd
MVP für Microsoft Excel
Noch mehr Excel-Tipps und VBA-Datenbank unter: http://held-office.de

Anzeige
Re: wenn Bedingung nicht erfüllt,ganze Zeile löschen
22.01.2003 08:50:39
michel
hallo juliane,

prinzipiell ist es relativ einfach, mit den wenigen angaben allerdings etwas komplizierter:

du programmierst eine for-next schleife, mit der du die zeilen durchsuchst und zwar in genau der reihe, in der die bedingung erfüllt sein soll.

ist sie erfüllt geht die suche weiter, wenn nicht, wird die zeile gelöscht....

könnte in etwa so aussehen:

fragen??

michel

Anzeige
Re: wenn Bedingung nicht erfüllt,ganze Zeile löschen
22.01.2003 08:53:03
Dierk
Moin,
Du müsstest zunächst einmal die Gesamtzahl der beschriebenen Zellen ermitteln mit z. B.
i = ThisWorkbook.Worksheets("Blattname").UsedRange.Rows.Count
Als nächstes dann eine for-next-schleife z.b.
for a =1 to i
if cells(a, spaltennummer) = ... then Cells(a, 1).EntireRow.Delete
next a
Man kann auch noch den Zählbefehl für die Zeilen in die For-next-schleife einbinden, aber ich finde es so übersichtlicher.

Warscheinlich habe ich ein Detail vergessen, aber so als Start könnte das klappen

gruss dierk


Anzeige
Re: wenn Bedingung nicht erfüllt,ganze Zeile löschen
22.01.2003 08:57:46
michel
hallo dierk,

was du vergisst ist, beim zählen von 1 bis letzte zelle überspringst du zellen, wenn du löscht.....
deshalb von letzter zeile bis 1....

;-)
michel

Re: wenn Bedingung nicht erfüllt,ganze Zeile löschen
22.01.2003 09:00:45
Oliver
Sub ZeilenLöschen()
' Makro löscht die Zeile, bei der in der spalte 1 das Wort "Löschen" steht
Dim zeile As Integer
For zeile = 2 To 300 ' 2 ist dabei die erste Zeile in der Du nachschaust und 300 die letzte
If ActiveSheet.Cells(zeile, 1).Value = "Löschen" Then
Rows(zeile & ":" & zeile).Delete Shift:=xlUp
zeile = zeile - 1
End If
Next zeile
End Sub
Anzeige
Re: wenn Bedingung nicht erfüllt,ganze Zeile löschen
22.01.2003 09:56:46
Dierk
Hallo michel,
ja, das Detail meinte ich dann wohl ... Vielen Dank ;-)

Gruss Dierk

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Zeilen in Excel löschen, wenn die Bedingung nicht erfüllt ist


Schritt-für-Schritt-Anleitung

Um eine gesamte Zeile in Excel zu löschen, wenn eine bestimmte Bedingung nicht erfüllt ist, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  3. Kopiere und füge den folgenden Code ein:

    Sub ZeilenLoeschenWennBedingungNichtErfuellt()
       Dim zeile As Long
       Dim letzteZeile As Long
       letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
    
       For zeile = letzteZeile To 1 Step -1
           If Cells(zeile, 1).Value <> "DeinKriterium" Then
               Cells(zeile, 1).EntireRow.Delete
           End If
       Next zeile
    End Sub
  4. Ersetze "DeinKriterium" mit dem Wert, der überprüft werden soll.

  5. Führe das Makro aus:

    • Drücke F5 oder gehe zu Run > Run Sub/UserForm.

Dieses Makro löscht alle Zeilen, in denen die Bedingung nicht erfüllt ist. Achte darauf, dass Du die richtigen Spalten und Zeilen angibst.


Häufige Fehler und Lösungen

  • Makro funktioniert nicht: Stelle sicher, dass Makros in Deiner Excel-Installation aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center und aktiviere die Option für Makros.

  • Falsche Zeilen werden gelöscht: Überprüfe, ob Du die Spalte und das Kriterium korrekt angegeben hast. Stelle sicher, dass die Bedingung exakt mit dem Zellinhalt übereinstimmt.


Alternative Methoden

Wenn Du keine VBA-Makros verwenden möchtest, kannst Du auch die Filterfunktion in Excel nutzen, um die Zeilen manuell zu löschen:

  1. Wähle die gesamte Tabelle aus.
  2. Gehe zu Daten > Filter.
  3. Setze einen Filter auf die Spalte, die die zu überprüfenden Werte enthält.
  4. Filtere nach den Werten, die nicht erfüllt sind und markiere die gefilterten Zeilen.
  5. Rechtsklicke und wähle "Zeile löschen".

Diese Methode funktioniert gut, wenn Du nur gelegentlich Zeilen löschen musst.


Praktische Beispiele

  1. Beispiel 1: Du möchtest alle Zeilen löschen, in denen in Spalte A nicht "Test" steht.

    Sub ZeilenLoeschen()
       Dim zeile As Long
       For zeile = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
           If Cells(zeile, 1).Value <> "Test" Then
               Cells(zeile, 1).EntireRow.Delete
           End If
       Next zeile
    End Sub
  2. Beispiel 2: Lösche Zeilen, wenn in Spalte B der Wert unter 50 liegt.

    Sub ZeilenLoeschenB()
       Dim zeile As Long
       For zeile = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
           If Cells(zeile, 2).Value < 50 Then
               Cells(zeile, 1).EntireRow.Delete
           End If
       Next zeile
    End Sub

Tipps für Profis

  • Wenn Du oft Zeilen basierend auf Bedingungen löschen musst, kannst Du Deine Makros weiter optimieren oder sogar eine benutzerdefinierte Funktion erstellen.
  • Nutze das Debugging-Tool in VBA, um Deine Makros zu testen und sicherzustellen, dass sie wie gewünscht funktionieren.
  • Überlege, ob Du eine Sicherungskopie Deiner Daten anfertigen möchtest, bevor Du Zeilen löschst, um versehentliche Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Bedingungen gleichzeitig prüfen? Du kannst mehrere If-Bedingungen in Deinem VBA-Code kombinieren:

If Cells(zeile, 1).Value <> "Test" And Cells(zeile, 2).Value < 50 Then
    Cells(zeile, 1).EntireRow.Delete
End If

2. Kann ich Zeilen löschen, ohne ein Makro zu verwenden? Ja, Du kannst die Filterfunktion oder bedingte Formatierungen verwenden, um die Daten zu visualisieren und dann manuell zu löschen.

3. Gibt es eine Möglichkeit, Zeilen zu löschen, wenn die Bedingung erfüllt ist? Ja, passe den Code einfach so an, dass die Zeilen gelöscht werden, wenn die Bedingung erfüllt ist:

If Cells(zeile, 1).Value = "Test" Then
    Cells(zeile, 1).EntireRow.Delete
End If

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige