Ich muss ein bestimmtes Zahlenmuster aus gemischtem Text in Excel extrahieren. Überlegungen:
- Die zu extrahierende Zahl hat immer das Muster
99.99.999.999
- Der String, in dem er enthalten ist, ist unterschiedlich lang, und die Position der zu extrahierenden Zahlen variiert ebenfalls.
- Am Anfang oder Ende der erforderlichen Zahlen befinden sich keine Zeichen, anhand derer sie extrahiert werden können
Beispiele:
01.11.202.037.2011_20171017150732.pdf
01.26.304.012.09.re_20170621163250.pdf
01.36.402.010 MAI 2011.pdf
2011.mai.01.02.203.001_20170802112610.pdf
lease_20161104110041.pdf
re.01.02.203.001.2012_20171019085424.pdf
16.20.116.014.14re_20170621161637.pdf
Ergebnis sollte sein:
01.11.202.037
01.26.304.012
01.36.402.010
01.02.203.001
NA
01.02.203.001
16.20.116.014
microsoft-excel
worksheet-function
g_profile
quelle
quelle
\d{1,2}\.\d{1,2}\.\d{1,3}\.\d{1,3}
Antworten:
Hier ist etwas mit regulären Ausdrücken. Es funktioniert mit all Ihren Beispielen und prüft auch, ob das erste und das letzte Segment nicht mehr als zwei oder drei Ziffern haben:
Das Regex-Muster sollte ziemlich klar sein, außer vielleicht für den Anfang und das Ende.
Der erste Teil
(?:^|\D)
Stellt sicher, dass dem Wert entweder eine Ziffer oder der Zeilenanfang vorangestellt wird.Der letzte Teil
(?:\D|$)
Stellt sicher, dass dem Wert entweder eine Ziffer oder das Ende der Zeile folgt.quelle
Solch ein Overkill, warum gehst du immer zu VBA, würde ich einfach tun
Ziehen Sie die Formel nach unten, oh ja, und fügen Sie eine Fehlerkorrektur für Werte ohne diese ein
quelle
Wenn Sie eine ziemlich einfach zu verfolgende VBA-Funktion möchten,
Mit VBA können Sie in der Tat alles verschachteln, was Sie wollen. Sie können diesen Code mithilfe von Subroutinen massiv komprimieren - z. Suche nach Zeichen im Format "99". oder "999". - aber obwohl es nicht "eng" ist, ist es hübsch :) Ich lasse es nackt, also ist es extrem einfach zu folgen.
Ich habe dies als Funktion geschrieben, damit es angepasst werden kann, um geparste Zeichenfolgen in Zellen auszugeben.
quelle
Diese Frage hat mich wirklich beschäftigt, also habe ich beschlossen, es selbst zu versuchen. ich denke, dass Ron Rosenfeld Die Antwort von ist hübsch einfach und vielleicht ein bisschen elaganter; Überlegen Sie sich diese Methode also unbedingt zuerst.
Ich verwende die folgende Methodik :
Der zusätzliche Code dient wie üblich dazu, Fehler abzufangen, die Leistung zu verbessern (getestet mit 5.000 doppelten Datensätzen) und die Logik zu verbessern.
Unten sehen Sie ein Bild des xlsm-Layouts:
BILD-LINK
Bitte besuchen Sie diese Code Review Beitrag für eine genauere Analyse von Thomas Inzina und Zeiger von AJD , der dazu beigetragen hat, die Qualität des folgenden Codes zu verbessern.
quelle