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

Forumthread: Datum vergleichen geht nicht

Datum vergleichen geht nicht
16.09.2004 20:02:47
Barbara
Folgendes Problem:
Mit Folgendem würde ich gerne in der Zeile 3 die Zelle finden, die den Wert von Geburtstag (05.07.91) hat.
Set ZelleDatum = Range("3:3").Find(Geburtstag)
Doch diese Zelle wird nicht gefunden, obwohl in E3 auch "05.07.91" steht.
Ich vermute nun, dass ich mit einem Textstring ("05.07.91") ein formatiertes Datum nicht finden kann? Nur, wie suche ich denn dann?
Diesen Textstring habe ich aus einer anderen Datumszelle rausgelesen.
Muss ich da was umwandeln, um es vergleichbar zu machen?
Nebenfrage: Wie finde ich auf dieser grossartigen Seite andere Postings zu diesem Thema. Gibt es da wo eine Suchfunktion? Hab nix gefunden.
Danke, LG, Barbara.
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Versuchs mal mit Home-> Excel Recherche
RAnton
Gruß
Anton
AW: Datum vergleichen geht nicht
PeterW
Hallo Barbara,
was ist denn bei dir Geburtstag? VBA "versteht" nur englisch! Folgendes klappt problemlos:

Sub Bereich()
Dim ZelleDatum As Range
Dim Geburtstag As Date
Geburtstag = #7/5/1991# 'Datum im englischen Format!!
Set ZelleDatum = Range("3:3").Find(Geburtstag)
MsgBox ZelleDatum.Column
End Sub

Gruß
Peter
Anzeige
AW: Datum vergleichen geht nicht
16.09.2004 20:40:44
Barbara
Hallo Peter,
danke für Deine Hilfe, aber den Geburtstag kann ich nicht eingeben, den holt sich das Makro aus einer anderen Zelle, in dem das Datum steht.
Da steht eben schon vorher:
Geburtsgag = Worksheets("Liste").Cells(6, 3)
Und daher hat diese Variable das Datum. Und dieses lässt sich nicht mit anderen Datumszellen vergleichen.
Anzeige
AW: Datum vergleichen geht nicht
PeterW
Hallo Barbara,
wenn das Datum aus einer Zelle eingelesen wird geht das auch (GeburtsGAG dürfte eher ein Tippfehler hier im Forum sein). Der Ansatz wurde getestet und funktioniert. Vielleicht hilft eine Beispielmappe von dir weiter.
Gruß
Peter
AW: Datum vergleichen geht nicht
Bert
In welcher Form steht das datum in der Zelle, als Zahl oder Text?
Bert
Anzeige
AW: Datum vergleichen geht nicht
16.09.2004 21:10:40
Barbara
Also nochmals genauer:
In den Zelle C6 und B3 steht das Datum 03.01.1971 im Datumsformat.
Jetzt gebe ich der Variablen q das Datum, um ganz sicher zu gehen.
Und dann suche ich q in der dritten Zeile, wo es aber drinnen steht (in B3 eben).
q = Cells(6, 3)
Set ZelleDatum = Range("3:3").Find(q)
Trotzdem ist Zelledatum "Nothing", das heisst der Suchvorgang ging ins Leere.
Anzeige
AW: Datum vergleichen geht nicht
16.09.2004 21:16:45
Matthias
Hallo Barbara,
also mit Typdeklarationen geht es:

Sub test()
Dim q As Date
Dim ZelleDatum
q = Cells(6, 3)
Set ZelleDatum = Range("3:3").Find(q)
MsgBox ZelleDatum.Address
End Sub

Gruß Matthias
AW: Datum vergleichen geht nicht
16.09.2004 21:32:47
Barbara
Hallo Matthias
bei mir geht es nicht. Ich hab Dein Programm rüberkopiert, ZelleDatum ergibt "Nothing" und in Folge gibt es bei Msgbox eine Fehlermeldung.
LG, barbara
Anzeige
AW: Datum vergleichen geht nicht
Bert
Die Version ist halt nicht ohne Relevanz! In E 97 hatte find so seine Schwierigkeiten mit Datumwerten. Ich weiß nicht mehr genau, aber man musste da Lookin:=xlValues
angeben(kann aber auch genau anders gewesen sein: Lookin:=xlFormulas).
Probier das mal aus, bei dir ist ja Lookin:= gar nicht angegeben.
Bert
Anzeige
AW: Datum vergleichen geht nicht
17.09.2004 00:14:54
Barbara
Habe die Lösung selbst gefunden.
Es geht mit CDate. Dies wandelt das Datum richtig um, sodaß es in die Find-Funktion eingesetzt werden kann.
Set ZelleDatum = Range("E3:F3").Find(CDate(q))
Bin durch Zufall draufgekommen.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Probleme beim Excel-Datum vergleichen lösen


Schritt-für-Schritt-Anleitung

Um in Excel ein Datum zu vergleichen und gezielt eine Zelle zu finden, folge diesen Schritten:

  1. Datum deklarieren: Stelle sicher, dass das Datum, das du vergleichen möchtest, korrekt deklariert ist. Verwende das englische Datumsformat, wenn du mit VBA arbeitest.

    Dim Geburtstag As Date
    Geburtstag = #7/5/1991# ' Beispiel für das englische Format
  2. Datum aus einer Zelle einlesen: Wenn das Datum aus einer anderen Zelle kommt, kannst du es so zuweisen:

    Dim q As Date
    q = Worksheets("Liste").Cells(6, 3) ' Datum aus Zelle C6
  3. Datum finden: Nutze die Find-Methode, um das Datum in einer bestimmten Zeile zu suchen.

    Dim ZelleDatum As Range
    Set ZelleDatum = Range("3:3").Find(CDate(q)) ' CDate konvertiert das Datum
  4. Ergebnis überprüfen: Überprüfe, ob das Datum gefunden wurde.

    If Not ZelleDatum Is Nothing Then
       MsgBox "Datum gefunden in: " & ZelleDatum.Address
    Else
       MsgBox "Datum nicht gefunden!"
    End If

Häufige Fehler und Lösungen

  • Problem: Set ZelleDatum = Range("3:3").Find(q) ergibt Nothing.

    • Lösung: Stelle sicher, dass q ein korrekt formatiertes Datum ist. Verwende CDate(q).
  • Problem: Die Find-Methode funktioniert nicht in älteren Excel-Versionen.

    • Lösung: Bei Excel 97 kann es nötig sein, LookIn:=xlValues hinzuzufügen:
    Set ZelleDatum = Range("3:3").Find(q, LookIn:=xlValues)

Alternative Methoden

Falls die Find-Methode nicht wie gewünscht funktioniert, gibt es alternative Ansätze:

  • Schleifen: Durchlaufe die Zellen in einer Zeile und vergleiche die Werte:

    Dim Zelle As Range
    For Each Zelle In Range("3:3")
       If Zelle.Value = CDate(q) Then
           MsgBox "Datum gefunden in: " & Zelle.Address
           Exit For
       End If
    Next Zelle
  • Filter: Nutze die Autofilter-Funktion in Excel, um nur die Zellen anzuzeigen, die das gesuchte Datum enthalten.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du das Excel-Datum vergleichen kannst:

  1. Datum aus einer Zelle finden:

    Sub DatumSuchen()
       Dim q As Date
       q = Worksheets("Liste").Cells(6, 3)
       Set ZelleDatum = Range("3:3").Find(CDate(q))
       If Not ZelleDatum Is Nothing Then
           MsgBox "Datum gefunden: " & ZelleDatum.Address
       Else
           MsgBox "Datum nicht gefunden!"
       End If
    End Sub
  2. Mit einer Benutzereingabe arbeiten:

    Sub BenutzerDatumSuchen()
       Dim BenutzerDatum As String
       BenutzerDatum = InputBox("Bitte Datum eingeben (TT.MM.JJJJ):")
       Set ZelleDatum = Range("3:3").Find(CDate(BenutzerDatum))
       If Not ZelleDatum Is Nothing Then
           MsgBox "Datum gefunden: " & ZelleDatum.Address
       Else
           MsgBox "Datum nicht gefunden!"
       End If
    End Sub

Tipps für Profis

  • Datumsformate beachten: Achte darauf, dass die Datumsformate in deinen Zellen und im Code übereinstimmen, um sicherzustellen, dass excel datum vergleichen problemlos funktioniert.

  • Fehlerbehandlung einbauen: Verwende On Error Resume Next, um Fehler während der Ausführung abzufangen und damit die Benutzerfreundlichkeit zu verbessern.

  • Benutze Format-Funktion: Wenn du Datumswerte vergleichen willst, kannst du die Format-Funktion verwenden, um sicherzustellen, dass die Formate übereinstimmen.


FAQ: Häufige Fragen

1. Warum funktioniert das Datum vergleichen nicht? Die häufigste Ursache ist, dass das Datum im falschen Format vorliegt oder als Text anstatt als Datum gespeichert ist.

2. Wie kann ich sicherstellen, dass mein Datum korrekt ist? Verwende die CDate-Funktion, um sicherzustellen, dass dein Datum in ein korrektes Datumsformat umgewandelt wird, bevor du den Vergleich vornimmst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige