Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1784to1788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Datumsuche als String?
30.09.2020 12:23:39
Mercury
Hi
habe ein Problem bei der Suche nach einem Datum. Dieses steht als Datum in einer Zelle. Der Suchbereich enthält Datumsangaben in verscheidener Form:
als Datum, wie auch in der Datumszelle oder
als Teil eines Textes.
Wie sieht da die Suche am besten aus? Als String gehts irgendwie nicht. Es soll, wenns geht, nur eine Suche sein.
https://www.herber.de/bbs/user/140540.xlsm
Musterdatei anbei, Code is drinnen, und hier auch noch als Vorschau:
Sub Datumfinden()
Dim Datum
Dim Zelle As Range, Bereich As Range
Set Bereich = Range("C2").CurrentRegion   'Suchbereich festlegen
Datum = Range("A3")
Set Zelle = Bereich.Find(Datum, LookIn:=xlValues, lookat:=xlPart)
If Not Zelle Is Nothing Then Debug.Print Zelle.Address
End Sub

Gruss, Michael

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

Betreff
Datum
Anwender
Anzeige
AW: Datumsuche als String?
30.09.2020 12:48:45
ChrisL
Hi Michael
Grundsätzlich suboptimal, wenn du in der selben Spalte unterschiedliche Datentypen verwendest.
Aber probier mal hiermit:
Sub Datumfinden()
Dim Datum As Date
Dim Zelle As Range, Bereich As Range
Set Bereich = Range("C2").CurrentRegion   'Suchbereich festlegen
Datum = Range("A3")
Set Zelle = Bereich.Find(Datum, LookIn:=xlValues, lookat:=xlPart)
If Zelle Is Nothing Then _
Set Zelle = Bereich.Find(CStr(Format(Datum, "DD.MM.YYYY")), LookIn:=xlValues, lookat:= _
xlPart)
If Not Zelle Is Nothing Then Debug.Print Zelle.Address
End Sub
cu
Chris
Anzeige
AW: Datumsuche als String?
30.09.2020 13:06:25
Luschi
Hallo Michael,
Datum und Vba.Find passen meist ganz schlecht zusammen, da die Formatierung eine entscheidene Rolle dabei spielt, ob das vorhandene Datum auch gefunden wird.
Ich benutze deshalb meist Application.Match, da hier nicht nach dem formatierten Datum, sondern nach der Zahl (deshalb auch .Value2) gesucht wird.
Der 07.10.2020 ist in meinem Beispiel auch ein Datum und kein String (siehe: Zelle Formatieren).
https://www.herber.de/bbs/user/140541.xlsm
Gruß von Luschi
aus klein-Paris
PS: Nachteil von Application.Match
- als Bereich kann nur 1 Zeile oder 1 Spalte angegeben werden
- 2:2 oder C:C
- aber nicht A1:K300 usw.
Anzeige
AW: Datumsuche als String?
30.09.2020 14:29:14
Mercury
Hallo Luschi,
Dein Code funktioniert in Deiner Datei. Warum das Datum im String gefunden wird, ist mir ein Rätsel, aber gut. Jedoch: Leider funktioniert es in meiner Datei nicht.
https://www.herber.de/bbs/user/140544.xlsm
Kannst Du vielleicht heruasfinden, was da falsch läuft?
Gruss, Michael
AW: Datumsuche als String?
30.09.2020 16:52:49
Herbert_Grom
Hallo,
es funktioniert bei Luschi deswegen, weil er die Zelle C8 mit diesem Format formatiert hat: TT.MM.JJJJ" Geburtstag".
Hilfreich wäre außerdem, wenn du etwas mehr Daten in deiner AM posten würdest!
Servus
AW: Datumsuche als String?
30.09.2020 17:21:03
Herbert_Grom
Hallo,
ich würde das mit einer Hilfsspalte lösen:
https://www.herber.de/bbs/user/140552.xlsm
Servus
Anzeige
AW: Datumsuche als String?
30.09.2020 18:37:47
Daniel
Hi
in der Zelle C1 steht der Wert als regluläres Datum ,dass ist eine Zahl, in diesem Fall 44136 für den 1. November. Das ist dein Suchwert.
in der Zeile 4 steht aber der Text "01.01.2020 Geburtstag".
dh wenn du diese Zelle mit dem Datum finden willst, musst du nach "01.11.2020" suchen.
du müsstest also deinen Zahlenwert aus Zelle C1 erst in einen Text mit dem richten Datumsformat bringen.
Weiterhin ist das Datum nur Teil des Zellinhaltes.
dh du musst für Application.Match mit Joker arbeiten bzw bei .Find mit LookAt:=xlPart oder ebenfalls mit Joker
Sub Datum1()
Dim Datum As Long
Dim Bereich As Range
Dim Fund
Dim Suchwert As String
Datum = Range("C1").Value2
Suchwert = Format(Datum, "DD.MM.YYYY") & "*"
Set Bereich = Range("4:4")
Fund = Application.Match(Suchwert, Bereich, 0)
If Not IsError(Fund) Then Debug.Print Bereich.Cells(Fund).Address
End Sub
Gruß Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige