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

Forumthread: Zeile löschen, wenn Wert nicht vorhanden

Zeile löschen, wenn Wert nicht vorhanden
20.11.2021 04:21:49
Stephan
Hallo Zusammen,
ich habe eine Tabelle, in dieser möchte ich, sofern in Spalte B nicht der Monat XY steht alle anderen Zeilen löschen. Dabei habe ich den Monat als Zahlenformat vorliegen, bspw. 01.11.2021. Ich habe mich schon einmal versucht, ohne Erfolg. Freue mich über Unterstützung. Grüße Stephan

Sub Test()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Tabelle_1")
Dim i As Long
Do While ws.Range("A2").Offset(i, 0).Value  ""
If Not ws.Range("B2").Offset(i, 0).Value Like "*11*" Then
ws.Range("B2").Offset(i, 0).Delete
End If
i = i + 1
Loop
End Sub
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile löschen, wenn Wert nicht vorhanden
20.11.2021 07:44:39
Oberschlumpf
Hi Stephan
willst du wirklich Zeilen löschen oder Zellen?
Du schreibst "...alle anderen Zeilen löschen"
Aber der Befehl...

ws.Range("B2").Offset(i, 0).Delete
...löscht nur die jeweilige Zelle in Spalte B
Und egal, ob Zeilen oder Zellen gelöscht werden, die unter dem gelöschten Element stehenden Werte rutschen nach dem Löschen eine Zeile höher.
Somit muss beim Löschen von Zeilen oder Zellen mit dem Überprüfen in der letzten, benutzen Zeile begonnen werden und nicht in der ersten Zeile.
Und der Befehl...

If Not ws.Range("B2").Offset(i, 0).Value Like "*11*" Then
...gibt auch dann WAHR zurück und führt zum Lösch-Befehl bei z Bsp diesen Datumswerten:

11.03.2022
11.09.2020
Mit obigem Befehl wird geprüft, ob ein Wert die Zahl 11 enthält - egal, an welcher Stelle 11 steht...z Bsp auch 01.01.1911 würde nicht gelöscht werden.
Somit solltest du den Datumswert auch wirklich nur auf den Monat 11 überprüfen (was du ja eigentlich auch erreichen wolltest...vermute ich :-) )
Versuch es mal mit diesem Code:

Sub Test()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Tabelle1")
Dim i As Long
'For i = ws.Cells... beginnt in der letzten Zeile von Spalte A...
For i = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row To 2 Step -1
'... und prüft die Werte in Spalte B
If Month(ws.Range("B" & i).Value)  11 Then
'der nächste Befehl löscht nur die Zelle
ws.Range("B" & i).Delete
'der nächste Befehl löscht die ganze Zeile
'ws.Rows(i).Delete
End If
Next
End Sub
Hilfts?
Ciao
Thorsten
Anzeige
AW: Zeile löschen, wenn Wert nicht vorhanden
20.11.2021 16:22:58
Stephan
Hallo Thorsten,
ich wollte, dass die ganze Zeile gelöscht wird. Dein Makro klappt wunderbar. Vielen Dank dafür und ein schönes Wochenende.
Grüße
Stephan
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel löschen, wenn Wert nicht vorhanden


Schritt-für-Schritt-Anleitung

Um in Excel alle Zeilen zu löschen, die nicht den gewünschten Wert enthalten, kannst du ein VBA-Makro verwenden. Folge dieser Anleitung:

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

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Sub Test()
       Dim ws As Worksheet
       Set ws = ThisWorkbook.Sheets("Tabelle_1") ' Tabellennamen anpassen
       Dim i As Long
       For i = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row To 2 Step -1
           If Month(ws.Range("B" & i).Value) <> 11 Then ' Monat anpassen
               ws.Rows(i).Delete ' Ganze Zeile löschen
           End If
       Next
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Drücke ALT + F8, wähle Test und klicke auf Ausführen.

Mit diesem Makro werden alle Zeilen gelöscht, in denen der Monat nicht 11 ist. Achte darauf, den Tabellennamen und den Monat nach Bedarf anzupassen.


Häufige Fehler und Lösungen

  • Fehler: "Excel zeile kann nicht gelöscht werden."

    • Lösung: Stelle sicher, dass das Arbeitsblatt nicht geschützt ist. Deaktiviere den Blattschutz unter Überprüfen > Blattschutz aufheben.
  • Fehler: "Excel zeilen lassen sich nicht löschen."

    • Lösung: Überprüfe, ob du möglicherweise Zellen oder Zeilen aus einer geschützten Tabelle löschen möchtest. Schütze das Blatt aufheben.
  • Fehler: Das Makro löscht nicht die gesamte Zeile.

    • Lösung: Stelle sicher, dass der Befehl ws.Rows(i).Delete verwendet wird, um die komplette Zeile zu löschen.

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch die Filterfunktion in Excel nutzen:

  1. Wähle die gesamte Tabelle aus und gehe zu Daten > Filtern.
  2. Filtere die Spalte B nach dem gewünschten Monat.
  3. Markiere die gefilterten Zeilen, klicke mit der rechten Maustaste und wähle Zeilen löschen.
  4. Entferne den Filter, um die verbleibenden Daten anzuzeigen.

Diese Methode funktioniert gut, wenn du schnell einige Zeilen löschen möchtest, ohne ein Makro zu erstellen.


Praktische Beispiele

Angenommen, du hast eine Tabelle mit Daten in Spalte B, in der verschiedene Datumsangaben stehen. Du möchtest alle Zeilen löschen, die nicht den Monat November (11) enthalten. Mit dem oben beschriebenen Makro kannst du dies schnell und effizient tun.

Wenn du hingegen ausschließlich Zellen löschen möchtest, in denen der Monat nicht 11 ist, kannst du diesen Code verwenden:

Sub DeleteCells()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Tabelle_1")
    Dim i As Long
    For i = 2 To ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
        If Month(ws.Range("B" & i).Value) <> 11 Then
            ws.Range("B" & i).ClearContents ' Nur Zelle löschen
        End If
    Next
End Sub

Tipps für Profis

  • Nutze Tastenkürzel für häufige Aufgaben. Um eine Zeile zu löschen, kannst du STRG + - verwenden, wenn eine Zeile oder Zelle ausgewählt ist.
  • Speichere dein VBA-Skript in einer Excel-Vorlage, um es bei zukünftigen Projekten schnell zugänglich zu haben.
  • Experimentiere mit Bedingungen in deinem Makro, um komplexere Filterungen durchzuführen.

FAQ: Häufige Fragen

1. Wie kann ich alle Zeilen löschen, die ein bestimmtes Wort enthalten? Du kannst die If-Bedingung im VBA-Makro anpassen, um nur Zeilen zu löschen, die ein bestimmtes Wort enthalten. Beispiel:

If InStr(ws.Range("B" & i).Value, "deinWort") > 0 Then
    ws.Rows(i).Delete
End If

2. Wie kann ich Zeilen löschen, die bestimmte Werte nicht enthalten? Verwende den Like-Operator oder den InStr-Befehl im Makro, um nach bestimmten Werten zu suchen, und lösche die Zeilen entsprechend.

Mit diesen Anleitungen und Tipps bist du bestens gerüstet, um in Excel gezielt Zeilen zu löschen, je nach den Werten in deinen Daten.

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