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

Forumthread: Datum vergleichen per Macro

Datum vergleichen per Macro
Karsten
Hallo
Ich habe folgendes Makro geschrieben:
Sub ältere_Daten_löschen()
Sheets("ZSH").Select
For a = 2 To 9999
If Sheets("ZSH").Cells(a, 3) 
In Spalte C stehen diverse Datum's.
22.02.2012 00:00
21.02.2012 00:00
usw..
Jedoch läuft das Makro durch bis zu einer leeren Zelle.
Der Unterschied den ich finde ist, das
Sheets("ZSH").Cells(a, 3) wird ohne "" dargestellt und der Vergleichswert mit.
Was muss ich ändern, damit es funktioniert?
Gruß und schon mal danke.
Karsten J.
Anzeige

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

Betreff
Benutzer
Anzeige
CDate(String) = Datum ...
27.02.2012 09:54:33
Matthias
Hallo
kleines Beispiel:
Option Explicit
Sub ältere_Daten_löschen()
Dim a&, MyDate As String
MyDate = "01.01.2012"
With Application
.ScreenUpdating = False
.EnableEvents = False
With Sheets("ZSH")
For a = 2 To 9999
If CDate(.Cells(a, 3)) 
Datei:
https://www.herber.de/bbs/user/79103.xls
Gruß Matthias
Anzeige
AW: CDate(String) = Datum ...
27.02.2012 12:48:08
Karsten
Vielen Dank.
Läuft perfekt.
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datum vergleichen per Macro in Excel


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA ein Datum zu vergleichen, kannst du folgendes Makro verwenden. Es löscht Daten, die älter sind als ein bestimmtes Datum in Spalte C.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code ein:
Option Explicit
Sub ältere_Daten_löschen()
    Dim a As Long
    Dim MyDate As String
    MyDate = "01.01.2012" ' Das Datum, mit dem verglichen wird
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    With Sheets("ZSH")
        For a = 2 To 9999
            If Not IsEmpty(.Cells(a, 3)) Then
                If CDate(.Cells(a, 3)) < CDate(MyDate) Then
                    .Cells(a, 3).EntireRow.Delete ' Zeile löschen
                End If
            End If
        Next a
    End With
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
  1. Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

Problem: Das Makro läuft bis zu einer leeren Zelle.
Lösung: Stelle sicher, dass du die If Not IsEmpty(...) Abfrage verwendest, um leere Zellen zu ignorieren.

Problem: Der Datumsvergleich funktioniert nicht.
Lösung: Vergewissere dich, dass die Datumswerte in Spalte C korrekt formatiert sind. Du kannst CDate(...) verwenden, um die Werte in Datumsformat zu konvertieren.


Alternative Methoden

Neben VBA kannst du auch Formeln verwenden, um Daten in Excel zu vergleichen. Eine Möglichkeit ist die Verwendung der WENN-Funktion:

=WENN(C2 < DATUM(2012;1;1); "Löschen"; "Behalten")

Diese Formel prüft, ob das Datum in Zelle C2 älter als der 01.01.2012 ist. Du kannst diese Formel nach unten ziehen, um sie auf andere Zellen anzuwenden.


Praktische Beispiele

Wenn du Daten in Excel vergleichen möchtest, kannst du folgendes Beispiel verwenden:

  • Angenommen, in Spalte C sind die folgenden Daten:
    • 22.02.2012
    • 21.02.2012
    • 01.01.2012

Du möchtest alle Daten, die älter als der 01.01.2012 sind, löschen. Das oben angegebene Makro erfüllt genau diesen Zweck.


Tipps für Profis

  • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Verwende Application.ScreenUpdating und Application.EnableEvents, um die Performance des Makros zu erhöhen, insbesondere wenn du viele Zeilen bearbeitest.
  • Teste dein Makro immer an einer Kopie deiner Daten, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Daten vergleichen?
Du kannst eine Schleife verwenden, um verschiedene Vergleichsdaten zu implementieren, oder mehrere If-Bedingungen in deinem Makro hinzufügen.

2. Welche Excel-Version benötige ich für das VBA-Makro?
Das VBA-Makro ist in den meisten modernen Excel-Versionen (Excel 2010 und höher) funktionsfähig. Achte darauf, dass du Makros in den Excel-Einstellungen aktivierst.

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