Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
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
Inhaltsverzeichnis

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

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
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
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..

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige