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

Geburtsdatum aus Text

Forumthread: Geburtsdatum aus Text

Geburtsdatum aus Text
bernie
Hallo VBA-ler
ich versuche gerade aus einer Tabelle, welche in den Spalten die blödesten Daten enthält, die Gebrurtsdaten zu extrahieren.
Mit der Excel Formel
=WENN(ODER(RECHTS(A2;1)="1";RECHTS(A2;1)="8";RECHTS(A2;1)="2";RECHTS(A2;1)="4");RECHTS(A2;10))
komme ich da nicht weiter, da auch andere Texte denen eine Ziffer nachgestellt ist, ausgelesen werden.
Ganz blöd wird es, wenn die Zelle in A weniger als 10 Zeichen enthält.
Vielleicht hat ja jermand eine zundende Idee.
https://www.herber.de/bbs/user/79006.xlsx
Im Voraus besten Dank Bernie
Anzeige
Prüfe auf Datwert() ...
20.02.2012 20:46:35
Matthias
Hallo
... und werte es aus
Tabelle1

 ABCD
1ObjekteObjekte#WERT! 
2huber, manfred, 12.03.195812.03.195821256;o)
374365, Wiesbaden, Goethestraße, 2estraße, 2#WERT! 

Formeln der Tabelle
ZelleFormel
B1=RECHTS(A1;10)
C1=DATWERT(B1)
B2=RECHTS(A2;10)
C2=DATWERT(B2)
B3=RECHTS(A3;10)
C3=DATWERT(B3)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Wenn kein Fehler dann Datum
Gruß Matthias
Anzeige
Mein Lieblingspattern ;-)
20.02.2012 20:49:52
ransi
HAllo
Wenn du etwas VBA einsetzten kannst wids einfach.
Schau mal ob du dich hiermit anrfeunden kannst:
Tabelle1

 AB
1Objekte 
2huber, manfred, 12.03.195812.03.1958
374365, Wiesbaden, Goethestraße, 2 
4abc 1.1.191101.01.1911
5efg 30.02.64 hij 

Formeln der Tabelle
ZelleFormel
B1=extract_erstes_Datum(A1)
B2=extract_erstes_Datum(A2)
B3=extract_erstes_Datum(A3)
B4=extract_erstes_Datum(A4)
B5=extract_erstes_Datum(A5)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Und diesen kleinen Code in ein Modul:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************



Option Explicit

Public Function extract_erstes_Datum(zelle)
    Dim Regex As Object
    extract_erstes_Datum = ""
    Set Regex = CreateObject("VbScript.Regexp")
    With Regex
        .Pattern = "(((0?[1-9]|[12][0-9])\.(0?[1-9]|1[0-2])\.)|(30\.((0?[13-9])|(1[0-2]))\.)|(31\.(0?[13578]|1[02])\.))((19|20)\d{2}|\d{2})"
        If .test(zelle.Text) = True Then _
            extract_erstes_Datum = CDate(.Execute(zelle.Text)(0))
    End With
End Function


ransi
Anzeige
AW: Mein Lieblingspattern ;-)
20.02.2012 21:24:16
bernie
Hallo Ransi,
diese Funktion läuft perfekt durch, jetzt habe ich nur das Probelm, daß aus der Spalgte A die Geburtsdaten entfernt werden sollen.
über =links(A1;länge(a1)-Länge(b1) ) funktioniert das nicht, daß das Datum bedingt durch den DATWERT() nur 5 Zeichen lang ist.
Bernie
regex is geil ;-)
20.02.2012 21:51:21
ransi
HAllo
HAb ich das so richtig verstanden ?
Tabelle1

 AB
1huber, manfred, 12.03.1958huber, manfred, #####
274365, Wiesbaden, Goethestraße, 274365, Wiesbaden, Goethestraße, 2
3abc 1.1.1911 hij 27.5.2008 klmabc ##### hij ##### klm
4efg 30.02.64 hijefg 30.02.64 hij
5  

Formeln der Tabelle
ZelleFormel
B1=machs(A1)
B2=machs(A2)
B3=machs(A3)
B4=machs(A4)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
und den Code wie eben in ein Modul:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit



Public Function machs(zelle)
    Dim Regex As Object
    machs = zelle.Text
    Set Regex = CreateObject("VbScript.Regexp")
    With Regex
        .Pattern = "(((0?[1-9]|[12][0-9])\.(0?[1-9]|1[0-2])\.)|(30\.((0?[13-9])|(1[0-2]))\.)|(31\.(0?[13578]|1[02])\.))((19|20)\d{2}|\d{2})"
        .Global = True
        If .test(zelle.Text) = True Then _
            machs = .Replace(zelle.Text, "#####")
    End With
End Function


ransi
Anzeige
sofern das Datum immer rechts steht immer ...
20.02.2012 21:13:25
Matthias
Hallo
Hier nochmal 2 eventuelle Möglichkeiten
Tabelle1

 ABC
1Objekt1  
2huber, manfred, 12.03.195812.03.195812.03.1958
374365, Wiesbaden, Goethestraße, 2  
4Objekt2  
5huber, manfred, 12.03.195912.03.195912.03.1959
674365, Wiesbaden, Goethestraße, 3  
7Objekt3  
8huber, manfred, 12.03.196012.03.196012.03.1960
974365, Wiesbaden, Goethestraße, 4  
10Objekt4  
11huber, manfred, 12.03.196112.03.196112.03.1961
1274365, Wiesbaden, Goethestraße, 5  

Formeln der Tabelle
ZelleFormel
B1=WENN(ISTFEHLER((RECHTS(A1;10))*1);"";RECHTS(A1;10))
C1=WENN(ISTFEHLER(DATWERT(RECHTS(A1;10)));"";RECHTS(A1;10))
B2=WENN(ISTFEHLER((RECHTS(A2;10))*1);"";RECHTS(A2;10))
C2=WENN(ISTFEHLER(DATWERT(RECHTS(A2;10)));"";RECHTS(A2;10))
B3=WENN(ISTFEHLER((RECHTS(A3;10))*1);"";RECHTS(A3;10))
C3=WENN(ISTFEHLER(DATWERT(RECHTS(A3;10)));"";RECHTS(A3;10))
B4=WENN(ISTFEHLER((RECHTS(A4;10))*1);"";RECHTS(A4;10))
C4=WENN(ISTFEHLER(DATWERT(RECHTS(A4;10)));"";RECHTS(A4;10))
B5=WENN(ISTFEHLER((RECHTS(A5;10))*1);"";RECHTS(A5;10))
C5=WENN(ISTFEHLER(DATWERT(RECHTS(A5;10)));"";RECHTS(A5;10))
B6=WENN(ISTFEHLER((RECHTS(A6;10))*1);"";RECHTS(A6;10))
C6=WENN(ISTFEHLER(DATWERT(RECHTS(A6;10)));"";RECHTS(A6;10))
B7=WENN(ISTFEHLER((RECHTS(A7;10))*1);"";RECHTS(A7;10))
C7=WENN(ISTFEHLER(DATWERT(RECHTS(A7;10)));"";RECHTS(A7;10))
B8=WENN(ISTFEHLER((RECHTS(A8;10))*1);"";RECHTS(A8;10))
C8=WENN(ISTFEHLER(DATWERT(RECHTS(A8;10)));"";RECHTS(A8;10))
B9=WENN(ISTFEHLER((RECHTS(A9;10))*1);"";RECHTS(A9;10))
C9=WENN(ISTFEHLER(DATWERT(RECHTS(A9;10)));"";RECHTS(A9;10))
B10=WENN(ISTFEHLER((RECHTS(A10;10))*1);"";RECHTS(A10;10))
C10=WENN(ISTFEHLER(DATWERT(RECHTS(A10;10)));"";RECHTS(A10;10))
B11=WENN(ISTFEHLER((RECHTS(A11;10))*1);"";RECHTS(A11;10))
C11=WENN(ISTFEHLER(DATWERT(RECHTS(A11;10)));"";RECHTS(A11;10))
B12=WENN(ISTFEHLER((RECHTS(A12;10))*1);"";RECHTS(A12;10))
C12=WENN(ISTFEHLER(DATWERT(RECHTS(A12;10)));"";RECHTS(A12;10))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias
Anzeige
AW: sofern das Datum immer rechts steht immer ...
20.02.2012 21:35:17
bernie
Hallo Matthias,
die Formel funtioniert. Jetzt ist nur noch das Probem, wie ich aus den A-Zellen die Geburtsdaten entfernen kann.
Gruß Bernie
AW: sofern das Datum immer rechts steht immer ...
20.02.2012 21:35:22
bernie
Hallo Matthias,
die Formel funtioniert. Jetzt ist nur noch das Probem, wie ich aus den A-Zellen die Geburtsdaten entfernen kann.
Gruß Bernie
Anzeige
AW: sofern das Datum immer rechts steht immer ...
20.02.2012 21:53:56
Reinhard
Hallo Bernie,
B1:
=WENN(ISTFEHLER(FINDEN(".";A1));WENN(ISTFEHLER(FINDEN(".";A1;FINDEN(".";A1)+1));"");TEIL(A1; FINDEN(".";A1)-2;10))
C1:
=WECHSELN(A1;B1;"")
nach unten kopieren.
Gruß
Reinhard
einer geht noch ;-)
20.02.2012 23:15:22
CitizenX
Hi,
Option Explicit
Function Get_Date(ByVal strZelle As String, Optional oRegex As Object)
    Set oRegex = CreateObject("VBscript.regexp")
    Get_Date = strZelle
    oRegex.Global = True: oRegex.Pattern = "[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{2,4}"
    If oRegex.Test(strZelle) Then If IsDate(oRegex.Execute(strZelle)(0)) Then Get_Date = oRegex.Replace(strZelle, " ")
End Function

Grüße
Steffen
Anzeige
AW: einer geht noch ;-)
20.02.2012 23:18:40
CitizenX
da war noch Rest(Müll) drin ;-) ... so:
Option Explicit
Function Get_Date(ByVal strZelle As String, Optional oRegex As Object)
    Set oRegex = CreateObject("VBscript.regexp")
    Get_Date = strZelle
    oRegex.Global = True: oRegex.Pattern = "[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{2,4}"
    If oRegex.Test(strZelle) Then Get_Date = oRegex.Replace(strZelle, " ")
End Function

Grüße
Steffen
Anzeige
ich werd zum..
20.02.2012 23:25:39
CitizenX
..Alleinunterhalter :-))
mein erster Post war schon richtig, es muss natürlich geprüft werden ob es sich um ein gültiges Datum handelt..
Gute Nacht..
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige