| Trim, Left, Right | | | | |
| | | | |
| | | | |
| Sub TrenneStrasseNummer() | | A | B | C |
| Dim Zellwert$, Zelle As Range, Zeile% | 1 | Straße / Haus-Nr. | Straße | Haus-Nr. |
| 2 | Berliner Str. 15 | Berliner Str. | 15 |
| For Each Zelle In ActiveSheet.Range("A2:A6") | 3 | Hans Maurer Straße 11b | Hans Maurer Straße | 11b |
| Zeile = Zeile + 1 | 4 | Straße des 17. Juni 23 | Straße des | 17. Juni 23 |
| Zellwert = ActiveSheet.Range("A" & Zeile + 1).Value | 5 | Straße des 17. Juni 24 a | Straße des | 17. Juni 24 a |
| 6 | 3. Nebenstraße | 3. Nebenstraße | |
| ActiveSheet.Range("B" & Zeile + 1).Value = StrName(Zellwert) | | | | |
| ActiveSheet.Range("C" & Zeile + 1).Value = HsNr(Zellwert) | | | | |
| Fehler: Namen wie "Straße des 17. Juni 23" werden nicht korrekt |
| Next | getrennt. |
| End Sub | |
| |
| Function StrName(Strasse As String) As String | Funktion: Straßennamen extrahieren |
| Dim pos As Integer | |
| Dim Laenge As Integer | |
| |
| pos = PosHsNrInStrasse(Strasse) | |
| Laenge = Len(Strasse) | |
| |
| If pos > 0 Then | |
| StrName = Trim(Left(Strasse, pos - 1)) | Trim: führende und nachgestellte Leerzeichen entfernen. |
| Else | |
| StrName = Strasse | |
| End If | |
| End Function | |
| |
| Function HsNr(Strasse As String) As String | Funktion: Hausnummer extrahieren |
| Dim pos As Integer | |
| Dim Laenge As Integer | |
| |
| pos = PosHsNrInStrasse(Strasse) | |
| Laenge = Len(Strasse) | |
| |
| If pos > 0 Then | |
| HsNr = Right(Strasse, Laenge - pos + 1) | |
| Else | |
| HsNr = "" | |
| End If | |
| End Function | |
| |
| Function PosHsNrInStrasse(Strasse As String) As Integer | |
| Dim Zaehler As Integer | |
| Dim Laenge As Integer | Von rechts nach links durch Strassennamen gehen (bis auf die |
| Dim x As String | drei linken Zeichen) damit Strassen, die mit Zahl beginnen |
| (z.B. "3. Nebenstraße") nicht als Hausnummer erkannt werden. |
| Laenge = Len(Strasse) | |
| PosHsNrInStrasse = 0 | |
| |
| For Zaehler = Laenge To 3 Step -1 | |
| x = Mid(Strasse, Zaehler, 1) | Aktuell zu prüfendes Zeichen. |
| If IsNumeric(x) Then | Prüfen, ob Zeichen eine Zahl ist. |
| PosHsNrInStrasse = InStr(Strasse, x) | Position der Zahl. |
| End If | |
| Next | |
| End Function | |
| | | | |