![]() |
Betrifft: Reguläre Ausdrücke
von: Golem
Geschrieben am: 04.08.2014 19:25:23
Hallo Excel-Fachleute,
ich habe ein Makro erstellt, um in ca. 1.000 Zeilen unterschiedliche Texte zu bereinigen ( mein erster
Versuch mit RegEx ).
Public Function Text_bereinigen(sText As String) As String Dim RegEx As Object ' Für das Entfernen bestimmter Zeichen aus einem String, wird hier die Replace-Methode _ verwendet ( RegEx )..... Set RegEx = CreateObject("Vbscript.Regexp") With RegEx .Pattern = "(NICHT|BEZAHLT|EU|[0-9]?[0-9]{3}[,][0]{2}|ENT-|GELT|FREMD|[0-9]?[0-9][,][ _ 0]{2}|EIGEN|[0-9]?[0-9][,][0]{2}|EU|KTO-NR.|FALSCH)|" & _ "[+ZV][0-9]{20}[ ]?[0-9]{2}|" & _ "(BAHNHOFSTR)[.]?[ ]?[1-9][ ]?[-]?[1-3]?[3]?|[0-3][ ]?[0-9][ ]?[.][ ] _ ?[0-1][ ]?[0-9][ ]?[.][ ]?[0-1][ ]?[0-9]|" & _ "[2-8][ ]?[0][ ]?[0-9][ ]?[0-9]|" & _ "[H][A-U]{2}[S][ ]?[1-4]|" & _ "[ -.A-Z]" .Global = True ' Jedes Auftreten wird berücksichtigt..... .IgnoreCase = True ' ignoriere Gross- und Kleinschreibung..... Text_bereinigen = .Replace(sText, "") End With Set RegEx = Nothing End FunctionDieses Makro funktioniert auch bisher einwandfrei. Aber ich gehe davon aus, dass das Makro noch optimiert werden kann.
![]() ![]() |
Betrifft: AW: Reguläre Ausdrücke
von: Daniel
Geschrieben am: 04.08.2014 19:46:01
HI
für eine Optimiertung ist es immer Hilfreich, wenn du zusätzlich zum Code auch noch beschreibst, was die Aufgabenstellung ist und was du erreichen willst.
Gruß Daniel
![]() ![]() |
Betrifft: AW: Reguläre Ausdrücke
von: Alice
Geschrieben am: 04.08.2014 20:54:38
Hallo RegMacher
RegEx immer wieder zu initialisieren ist bööööööööööse
wird bestimmt ganz viel ganz schneller wenn vorher gedingst.
Alice - die vom Wunderland
![]() ![]() |
Betrifft: Und nu iss Daniel wieder Alice... :-)) owT
von: Luc:-?
Geschrieben am: 04.08.2014 21:42:20
:-?
![]() ![]() |
Betrifft: AW: Und nu iss Daniel wieder Alice... :-)) owT
von: ransi
Geschrieben am: 04.08.2014 22:39:59
Hallo
Es wäre hilfreich wenn du mal ein par typische Beispielstrings reinstellen würdest, und dann erklärst was du daraus brauchst.
Da kann man dann mal dran testen.
ransi
![]() ![]() |
Betrifft: AW: Reguläre Ausdrücke
von: Golem
Geschrieben am: 04.08.2014 21:04:17
Hallo Daniel,
ist ja auch korrekt. Habe ich vergessen.
Ich habe von einem Gemeinschaftskonto sämtliche Einzahlungen ( ca. 1.000 Kontobewegungen ) eines Jahres als Excel-Datei vorliegen. Aus dem Text, aus der Spalte Verwendungszweck, möchte ich die Wohnungsnummer der Einzahler für die weitere Verwendung extrahieren. Die einzelnen Strings setzen sich teilweise aus Text und Zahlen zusammen und die Einzahler verwenden viele Textvariationen, die nicht benötigt werden.
Mit dem Makro konnte ich bisher die Hausnummern auslesen, aber das Pattern ist auf den vorliegenden Text des Jahres 20013
ausgelegt und die Textvariationen können sich sicherlich in den nächsten Jahren ändern. Deshalb ist auch mein Anliegen,
das Makro individueller auszulegen.
Mit
"(NICHT|BEZAHLT|EU|[0-9]?[0-9]{3}[,][0]{2}|ENT-|GELT|FREMD|[0-9]?[0-9][,][0]{2}|EIGEN|[0-9]?[0-9][,][0]{2}|EU|KTO-NR.|FALSCH)|" &
entferne ich folgenden Stringteil: "NICHT BEZAHLT EU 333,00ENT- GELT FREMD03,00EIGEN03,00EU KTO-NR. FALSCH" .
Mit
"[+ZV][0-9]{20}[ ]?[0-9]{2}|" & entferne ich folgenden Stringteil: "ZV01001524033655000000 02" .
Mit
"(BAHNHOFSTR)[.]?[ ]?[1-9][ ]?[-]?[1-3]?[3]?|[0-3][ ]?[0-9][ ]?[.][ ]?[0-1][ ]?[0-9][ ]?[.][ ]?[0-1][ ]?[0-9]|" &
entferne ich folgenden Stringteilkombinationen: "BAHNHOFSTR.7" ,"BAHNHOFSTR.9" , "BAHNHOFSTR.11" ,"BAHNHOFSTR.13" ,"BAHNHOFSTR.7 13" , "BAHNHOFSTR.7-13" oder "BAHNHOFSTR.713" ( evtl. auch noch weitere Möglichkeiten ).
Mit
"[2-8][ ]?[0][ ]?[0-9][ ]?[0-9]|" & entferne ich folgenden Stringteil: Jahreszahl 2013 bis 2099 mit alle Variationen ( z. B.
20 13 oder 2 013 usw. ).
Mit
"[H][A-U]{2}[S][ ]?[1-4]|" & entferne ich folgenden Stringteilkombinationen: "Haus 1", "Haus1", "Haus 2", "Haus2", "Haus 3", "Haus3"
"Haus 4", "Haus4", "Haus1-4", "Haus14", "Haus 1 4" usw. .
Mit dem letzten Teil
"[ -.A-Z]" entferne ich die Bindestriche, Punkte und die restlichen Buchstaben.
Ein bisschen viel Text, aber ich hoffe, dass ich mich verständlich ausgedrückt habe.
Schöne Grüße
Werner
![]() |