Straßenname und Hausnummer trennen (per Makro)

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



 Ranking-Hits zurück Sitemap
Designed by www.wbrnet.info