2016-09-22 3 views
0

Ich möchte durch die Verwendung einer MS Excel Formel Text/Jahr aus einem Teilstring von Text mit einem eindeutigen Suchmuster extrahieren. Ich habe eine Spalte (Zelle A2: A19) von eindeutigen Daten, in einigen Fällen gibt es umgebenden Text vor und nach dem Text, den ich nur das Jahr extrahieren möchte, dass alle eindeutig mit der Zahl "1" beginnen (dh 17 ??, ?? 18, 19 ??, etc.)MS Excel - Eindeutige Textmuster extrahieren Schlüsselwort von Substring

aktuelle Formel enter image description here

DATE  
April 1 1799  
April 11 1867  
February 12 1806  
February 21 1798  
February 28 1844 as Delaware Township  
February 5 1798  
February 7 1892 Verona Township  
February 9 1797  
January 19 1748  
July 10 1721 as Upper Penns Neck Township  
March 15 1860  
March 17 1870 (as Raritan Township)  
March 17 1874  
March 23 1864  
March 5 1867  
April 28th 1828  
1840s  
1878 as Lehigh Township 

aktuelle Ergebnisse (aus der Formel oben verwendet)

enter image description here

enter image description here

WÜNSCHENSWERT ERGEBNISSE:

enter image description here

+1

Es wäre nett, wenn Sie die Daten als Text in den Original Post setzen, so dass wir nicht neu eingeben müssen, was bereits eingegeben wurde nur um unsere Formeln zu testen. –

+0

Geben Sie in Ihrem ursprünglichen Beitrag nicht die Kommentare ein, da die Kommentare nicht formatiert werden können. –

Antwort

1

Diese Formel erhalten Sie jeden mit Ausnahme des 1840s

=TRIM(MID(A2,MIN(IFERROR(SEARCH({"17?? ","18?? ","19?? "},A2 & " "),1E+99)),4)) 

Es ist eine Formel-Array und muss bestätigt werden, Ctrl-Shift-Enter beim Verlassen Bearbeitungsmodus. Wenn es richtig gemacht wird, wird Excel {} um die Formel setzen.

enter image description here

+0

Danke Scott, es funktioniert und wie du freundlicherweise mit der kleinen Ausnahme angegeben hast, mit der ich total leben kann, danke, deine bereitgestellte Formel funktioniert fantastisch ... DANKE. – Miaka3

0

Wenn Makros erlaubt sind, können Sie ein Codemodul erstellen und diesen Code setzen in es:

Public Function GetYear(text As String) 
    Dim regex 
    Set regex = CreateObject("VBScript.RegExp") 
    regex.Pattern = ".*(\d{4}).*" 
    Set matches = regex.Execute(text) 

    GetYear = matches(0).Submatches(0) 
End Function 

Dann können Sie eine Formel wie "= GetYear (A1)" zu erhalten alle Jahre, einschließlich der 1840er Jahre und andere ähnliche Formate. Es sucht im Grunde nach einer Gruppe von vier Ziffern nebeneinander in der angegebenen Zeichenfolge. Nicht der beste Algorithmus für die Datumsabgleichung, aber er klingt, als wäre er für Ihren Anwendungsfall ausreichend.

+0

Adrian, danke für das zur Verfügung gestellte Macro, da ich diese Methode als dringend benötigte Alternative im Gegensatz zu Formeln verwenden werde. Ich war auch in der Lage, die gewünschten Ergebnisse mit der Formel von Scott mit nur einer geringfügigen Modifizierung zu erreichen ... Danke nochmal. – Miaka3

0

Mit der von Scott zur Verfügung gestellten MS Excel-Formel konnte ich einen kleinen Tweek erstellen, der das Problem der Erfassung/Extraktion nur von Datumsangaben und ähnlichem löste. Dies wurde erreicht, indem nur das Wildcard-Asterisk-Symbol hinzugefügt wurde, um eine beliebige Reihe von Zeichen darzustellen, gefolgt von den Fragezeichen "??". Danke Scott ... = IFERROR (TRIM (MITTEL (A2, MIN (IFERROR (SEARCH ({"16 ?? *", "17 ?? *", "18 ?? *", "19 ?? *")}, A2 & "", 1E + 99)), 4)), "")

+0

Sie werden damit falsche Ergebnisse erhalten. Sieh dir die Rückkehr für 'Januar 19 1748' an, es wird '19 1' zurückgeben, weil es den Tag zuerst findet. Das ist der Grund, warum ich getan habe, was ich getan habe. Meins wird zumindest die wenigen eingrenzen, die Sie manuell tun müssen. –

+0

Scott, Sie haben Recht ... Ich habe das, was Sie angegeben haben, erlebt, also bin ich zu Ihrer bereitgestellten Formel zurückgekehrt. Vielen Dank.. – Miaka3