Anzeige
Archiv - Navigation
1384to1388
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
Mit RegEx letzte Ziffer entfernen
15.10.2014 18:27:53
Golem
Hallo Excel-Fachleute!
Ich habe drei Zeichenketten: "BEWKOSTEN050003390", "SVWZWOHNUNGNR.50007011" und
"WOHNUNGNR.40BAHNHOFSTR.13.
Mit dem Regex "(BEWKOSTEN|EREF|ZV|SVWZ|WOHNUNGNR.|BAHNHOFSTR.13)" und "[\d]{6}"
erhalte ich folgen Zahlen: "390", "11" und "40".
Als Ergebnis möchte ich die Zahlen "39", "11" und "40" erhalten.
Wie kann ich von der Zahl "390" die Ziffer "0" entfernen, ohne bei der Zahl "40" auch die
Ziffer "0" zu entfernen?
Für evtl. Tipps oder Anregungen schon mal besten Dank!
Werner

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit RegEx letzte Ziffer entfernen
15.10.2014 23:15:35
ransi
HAllo
Zeigst du uns mal den kompletten Code ?
ransi

=Left(Zahl, 2)*1 owT
16.10.2014 14:08:04
Rudi
.

AW: =Left(Zahl, 2)*1 owT
16.10.2014 15:35:48
Golem
Hallo Rudi,
einen schönen Dank für Deinen Vorschlag,
ich habe eine Lösung für mein Problem gefunden, aber ein neues Problem hat sich aufgetan.
Damit bin ich momentan noch am Ausprobieren.
Dein Vorschlag ist eine Alternative. Aber mein Ehrgeiz möchte das Problem mit RegEx lösen.
Wenn Du Interesse an meinen Gesamtcode haben solltest, so warte bitte noch eine kurze Zeit.
Dann werde ich den Gesamtcode mit Lösungsbeschreibung mitteilen.
Ich bin sehr daran interessiert, dass Excel/VBA-Fachleute mir evtl. konstruktiv behilflich sein werden.
Schöne Grüße
Werner

Anzeige
AW: Mit RegEx letzte Ziffer entfernen
16.10.2014 15:28:59
Golem
Hallo Ransi,
einen schönen Dank für Deine Anfrage.
Ich habe eine Lösung für mein Problem gefunden, aber ein neues Problem hat sich aufgetan.
Damit bin ich momentan noch am Ausprobieren.
Wenn Du noch an meinen Gesamtcode Interesse hast, so warte bitte noch eine kurze Zeit.
Dann werde ich den Gesamtcode mit Lösungsbeschreibung mitteilen.
Ich bin sehr daran interessiert, dass Excel/VBA-Fachleute mir evtl. behilflich sein werden.
Schöne Grüße
Werner

AW: Mit RegEx letzte Ziffer entfernen
18.10.2014 12:01:15
Golem
Hallo Rudi und Ransi,
wie zugesagt, hier mein Ergebnis für "Mit RegEx letzte Ziffer entfernen".
Zur Erinnerung:
Ich habe drei Zeichenketten: "BEWKOSTEN050003390", "SVWZWOHNUNGNR.50007011" und
"WOHNUNGNR.40BAHNHOFSTR.13.
Mit dem Regex "(BEWKOSTEN|EREF|ZV|SVWZ|WOHNUNGNR.|BAHNHOFSTR.13)" und "[\d]{6}"
erhalte ich folgen Zahlen: "390", "11" und "40".
Als Ergebnis möchte ich die Zahlen "39", "11" und "40" erhalten.
Wie kann ich von der Zahl "390" die Ziffer "0" entfernen, ohne bei der Zahl "40" auch die
Ziffer "0" zu entfernen?
Ich habe es mit einer sogenannten "Wortgrenze" ( \b[0] ) gelöst. Mit dieser sogenannte Wortgrenze wird
geprüft, ob ein Wortende eine Ziffer "0" besitzt und wenn ja, dann wird diese Ziffer entfernt.
Aber in dem Text "HAUSGELD WOHN.NR.30" ist dadurch auch von der Zahl "30" die "0" entfernt worden.
Dies ist das nächste Problem gewesen.
Danach habe ich mit dem Vorschlag von Ransi einige Beispiele probiert ( =Left(Zahl, 2)*1 ),
die Regexe weiter angepasst und die Reihenfolge der einzelnen Regexe verändert und
jetzt funktioniert alles einwandfrei.
Was möchte ich erreichen!
Ich habe von einer Bank eine csv-Datei, in der vom Jahr 2013 alle Kontobewegungen eines Girokontos
angegeben werden ( ca. 1.000 Bewegungen ).
Aus der Spalte "Verwendungszweck" möchte ich von allen Einzahlungen die teilweise enthaltenen Wohnugs-Nummern auslesen.
Die Texte in den einzelnen Zellen sind recht unterschiedlich ( der Kreativität der Angabe des Verwendungszweckes sind
keine Grenzen gesetzt ).
Das ist ein Teilbereich der gesamten Auswertung und alles funktioniert einwandfrei.
Public Function Wohnungs_Nr_finden(ByVal Verwendungszweck As String) As String
Dim RegEx As Object
' Reguläre Ausdrücke (Regular Expressions, kurz RegExp) dienen zum Suchen und Ersetzen von  _
Textelementen.
' Hier, für das Entfernen bestimmter Namen aus einem String.
' Mit Hilfe der Replace Methode kann man eine Zeichenkette nach bestimmten Textmustern (Pattern) _
durchsuchen
' und die gefundenen Textstellen durch einen anderen Text ersetzen oder löschen.
Dim re1 As String
re1 = Range("RegEx1")
Dim re2 As String
re2 = Range("RegEx2")
Dim re3 As String
re3 = Range("RegEx3")
Dim re4 As String
re4 = Range("RegEx4")
Dim re5 As String
re5 = Range("RegEx5")
Dim re6 As String
re6 = Range("RegEx6")
Dim re7 As String
re7 = Range("RegEx7")
Dim re8 As String
re8 = Range("RegEx8")
Dim re9 As String
re9 = Range("RegEx9")
Dim re10 As String
re10 = Range("RegEx10")
Dim re11 As String
re11 = Range("RegEx11")
Dim re12 As String
re12 = Range("RegEx12")
Dim re13 As String
re13 = Range("RegEx13")
Dim re14 As String
re14 = Range("RegEx14")
Dim re15 As String
re15 = Range("RegEx15")
Dim re16 As String
re16 = Range("RegEx16")
Dim re17 As String
re17 = Range("RegEx17")
Dies ist mein Code:
Set RegEx = CreateObject("Vbscript.Regexp")
With RegEx
.Global = True            ' Soll nur die erste Fundstelle (Standard, False), oder  _
alle Fundstellen (True) zurückgegeben werden?.....
.IgnoreCase = True        ' Legt fest, ob Groß- oder Kleinschreibung beachtet werden  _
soll.....
'.MultiLine = False       ' Wird diese Eigenschaft auf True gesetzt, so wird in der  _
Textbox Text mehrzeilig dargestellt.....
' Pattern-Zuweisung (engl. Modell, Muster) zum RegExp Objekt. Dieser Schritt definiert das " _
Wortmuster" nach dem in einer Zeichenkette gesucht werden kann.
.Pattern = re1
Wohnungs_Nr_finden = .Replace(Replace(Replace(Replace(Replace(Replace(Replace( _
Verwendungszweck _
, " ", ""), "-", ""), "/", ""), ",", ""), "&", ""), "+", ""), "" _
)
.Pattern = re2
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re3
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re4
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re5
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re6
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re7
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re8
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re9
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re10
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re11
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re12
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re13
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re14
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re15
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re16
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
.Pattern = re17
Wohnungs_Nr_finden = .Replace(Wohnungs_Nr_finden, "")
End With
Set RegEx = Nothing
If Wohnungs_Nr_finden = "390" Then
Wohnungs_Nr_finden = Left(Wohnungs_Nr_finden, 2)
Else
If Wohnungs_Nr_finden = "" Then
Wohnungs_Nr_finden = 0
End If
End If
End Function
Und das sind die einzelnen RegExe:
(Jan|Febr|Ma|Apr|Ju)\.?(\D?){1,3}[\d?]{1,4}
'Jan(.), Januar, Febr(.), Februar, Maerz, Mai, Apr(.), April, Jun(.), Juni, Jul(.), Juli, 1 bis 99
(Aug|Sept|Okt|Nov|Dez)\.?(\D?){4,5}[\d?]{1,4}
'Aug(.), August, Sept(.), September, Okt(.), Oktober, Nov(.), November, Dez(.), Dezember, 1 bis 99
(((0?[1-9]|[12][0-9])\.(0?[1-9]|1[0-2])\.)|(30\.((0?[13-9])|(1[0-2]))\.)|(31\.(0?[13578]|1[02])\.))(\d{2}|20\d{2})
'Beispiel: (0)2.08.13 oder 28.11.2099
(20\d{2})
'Beispiel: 2010 bis 2099
(Bahnhofstr\.?\d[1-3]?)
'Bahnhofst. 7 oder 9 usw. bis 7-13
((Bew)|(Kosten)|(Haus[\d]?)|(Geld))
'Bew, Kosten, Haus (1 bis 4), Geld
((Whn)|(Wohn|ungs?)|(Geld)|(N(\D?){4}r)|[\.?])
'Whn, Wohn, Geld, Wohnung(s), Wohnung(s)nummer
(Nachzahl[\.?](\D{3})?)
'Nachzahl(.), Nachzahlung
(EREF(ZV)?[\d]{12,22}|SVWZ)
([0]?5[0]{3}[1]?[7]?[9]?[1-4]?[0]?)
'Beispiel: 050003390
[A-Z](\.?){1,4}
Siebzehn Zellen habe ich für RegExe vorgesehen, davon sind elf belegt.
Schöne Grüße an Euch und schönen Dank für Eure Bemühungen!
Werner
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge