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

Forumthread: Zeilen löschen wenn Datum...

Zeilen löschen wenn Datum...
03.05.2022 09:23:24
Jürgen
Liebe Community,
ich habe bei meiner Excel-Tabelle folgendes Problem:
Ich habe in Spalte O ein Datum im Format dd.mm.yyyy eingetragen, beginnend in O2, Ende variabel.
Nun möchte ich, dass beim Aufrufen des Tabellenblattes alle Zeilen gelöscht werden, in denen ein Datum eingetragen ist, welches älter als das aktuelle Jahr ist. Wenn wir uns also im Jahr 2022 befinden, sollen alle Zeilen mit Datum 2021 oder älter gelöscht werden.
Bitte um Hilfe, ich bekomms nicht hin.
Danke! Mfg Jürgen
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen wenn Datum...
03.05.2022 10:36:56
Beverly
Hi Jürgen,
ich würde das nicht beim Aufrufen des Blattes machen, denn dann würde der entsprechende Code jedesmal ausgeführt, sondern zielgerichtet bei Bedarf - z.B. mit folgendem Makro, welches du einer Schaltfläche zuweisen kannst:

Sub Loeschen()
Dim lngZeile As Long
Dim lngLetzte As Long
Dim varLoeschen As Variant
With Worksheets("Tabelle1") ' "" Then .Range(.Cells(2, 15), .Cells(lngLetzte, 15)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub
Bis später
Karin

Anzeige
AW: Zeilen löschen wenn Datum...
03.05.2022 11:21:59
Jürgen
Hallo Karin,
danke für den Code. Er funktioniert fast.
Es gibt in dieser Datumsspalte auch Zellen, wo KEIN Datum eingetragen ist. Diese dürfen nicht gelöscht werden.
Und jetzt kommt das Eigenartige, was ich nicht ganz verstehe: Füge ich deinen Code ein und führe das Makro aus, dann werden 2 Datensätze, in denen das Datumsfeld leer ist, nicht gelöscht. Alle anderen, in denen kein Datum steht, werden hingegen gelöscht.
Könnte es etwas mit der Position der Datensätze zu tun haben? Die beiden nicht gelöschten sind die beiden letzten in der Tabelle?
Danke für deine Hilfe!
Lg Jürgen
Anzeige
AW: Zeilen löschen wenn Datum...
03.05.2022 11:44:52
Beverly
Hi Jürgen,
so ist das, wenn man die Problemstellung ungenau beschreibt bzw. keine Beispielmappe hochlädt, die alle wichtigen Elemente repräsentiert: das konnte niemand wissen, dass es auch Zellen ohne Datum (also bereits leere) gibt. ;-)
Der Code baut nämlich darauf auf, dass in der Schleife die Zellen mit dem falschen Jahr geleert und am Ende alle Zeilen mit leeren Zellen in Spalte O auf einen Ritt gelöscht werden.
Gibt es eine Spalte, in der ALLE Zellen belegt sind?
Was die letzten beiden leeren Datensätze betrifft: in Spalte O wird die letzte belegte Zeile ermittelt und dann von dieser an rückwärts bis Zeile 2 alle Zeilen durchlaufen - da dort in Spalte O nichts steht, wird die letzte Zeile um 2 weniger ermittelt und somit nur die leeren Zeilen bis zu letzten tatsächlich belegten Zeile gelöscht.
Bis später
Karin

Anzeige
AW: Zeilen löschen wenn Datum...
03.05.2022 12:00:30
Jürgen
Hallo Karin,
ich weiß, ich weiß! Mea culpa! Sollte ja auch kein Vorwurf sein :)
Hier eine Beispieldatei: https://www.herber.de/bbs/user/152823.xlsx
Es gibt durchaus Spalten, in denen jede Zelle belegt ist. Aber in keiner Zeile ist jede Zelle befüllt.
Lg Jürgen
Anzeige
AW: Zeilen löschen wenn Datum...
03.05.2022 12:10:20
Beverly
Hi Jürgen,
dann nehmen wir als Grundlage die Spalte B:

Sub Loeschen()
Dim lngZeile As Long
Dim lngLetzte As Long
Dim varLoeschen As Variant
With Worksheets("Tabelle1") ' "" Then
If Year(.Cells(lngZeile, 15))  "" Then .Range(.Cells(2, 2), .Cells(lngLetzte, 2)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub
Bis später
Karin

Anzeige
AW: Zeilen löschen wenn Datum...
03.05.2022 12:20:09
Jürgen
Hi Karin,
das funktioniert PERFEKT!! Danke!!
Lg Jürgen
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen basierend auf Datum in Excel löschen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und gehe zu dem Tabellenblatt, in dem du die Zeilen löschen möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

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

  4. Füge den folgenden VBA-Code ein:

    Sub Loeschen()
       Dim lngZeile As Long
       Dim lngLetzte As Long
       With Worksheets("Tabelle1") ' Name des Arbeitsblatts anpassen
           lngLetzte = .Cells(.Rows.Count, 15).End(xlUp).Row ' Ermittelt die letzte Zeile in Spalte O
           For lngZeile = lngLetzte To 2 Step -1
               If IsDate(.Cells(lngZeile, 15).Value) Then
                   If Year(.Cells(lngZeile, 15).Value) < Year(Date) Then
                       .Rows(lngZeile).Delete ' Löscht die Zeile, wenn das Datum älter ist
                   End If
               End If
           Next lngZeile
       End With
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Weise das Makro einer Schaltfläche zu, um es einfach auszuführen.


Häufige Fehler und Lösungen

  • Problem: Einige Zeilen werden nicht gelöscht, obwohl sie ein Datum enthalten.

    • Lösung: Stelle sicher, dass die Zellen in Spalte O tatsächlich Datumswerte sind und nicht als Text formatiert sind. Der obige Code prüft auch, ob eine Zelle ein Datum enthält.
  • Problem: Das Makro löscht auch leere Zeilen.

    • Lösung: Achte darauf, dass der Code nur Zeilen löscht, wenn ein Datum vorhanden ist. Der Code oben berücksichtigt dies.

Alternative Methoden

Eine alternative Methode, um Zeilen basierend auf einem Datum zu löschen, ist die Verwendung von Excel-Funktionen:

  1. Filtere die Daten in Spalte O nach dem Jahr.
  2. Markiere die gefilterten Zeilen und drücke Strg + - (Minus), um sie zu löschen.
  3. Setze den Filter zurück, um alle verbleibenden Daten anzuzeigen.

Diese Methode ist handlicher, wenn du nicht ständig das Makro ausführen möchtest.


Praktische Beispiele

Angenommen, du hast folgende Daten in Spalte O:

O
01.01.2020
15.05.2021
10.12.2022
01.01.2019

Nach dem Ausführen des Makros werden die Zeilen mit den Daten 01.01.2020, 15.05.2021 und 01.01.2019 gelöscht, sofern das aktuelle Jahr 2022 ist.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False am Anfang des Makros, um die Bildschirmaktualisierung während der Ausführung zu deaktivieren. Das beschleunigt den Vorgang erheblich.

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True
  • Teste dein Makro immer in einer Kopie deiner Datei, um ungewollte Datenverluste zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich das Makro automatisch beim Öffnen der Datei ausführen?
Du kannst das Makro mit der Workbook_Open-Ereignisprozedur verknüpfen. Füge den Code in das DieseArbeitsmappe-Modul ein.

2. Funktioniert dieser Code in jeder Excel-Version?
Ja, der Code ist in den meisten modernen Excel-Versionen, einschließlich Excel 2016 und Excel 365, anwendbar. Achte darauf, dass Makros in deiner Excel-Anwendung aktiviert sind.

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