Discussion:
Hausnummern mit Buchstaben trennen
(zu alt für eine Antwort)
worstoj
2005-10-17 15:43:28 UTC
Permalink
Hallo Newsgroupler,
ich habe eine Exceladresstabelle bekommen in der die Straße wie folgt
geschrieben wurde:
"Straßenname 23 b" diese Schreibweise wäre korrekt. Doch was mache
ich um umzuwandeln, wenn es so ausieht:
"Straßenname 23a"
"Straßenname22"
"Heinrich Heine Straße 23b"
"Heinrich-Heine-Straße 23a"
Hausnummer und Buchstabe sollen durch ein Leerzeichen getrennt werden.
Da die Adressenliste ca. 6000 Adressen beinhaltet, ist eine manuelle
Korrektur zu aufwendig.
Ich arbeite mit Excel 2000.
Mit freundlichen Grüßen
Günter
Alexander Wolff
2005-10-17 16:32:23 UTC
Permalink
Post by worstoj
"Straßenname 23 b" diese Schreibweise wäre korrekt. Doch was mache
"Straßenname 23a"
"Straßenname22"
"Heinrich Heine Straße 23b"
"Heinrich-Heine-Straße 23a"
Anregungen evtl unter:
http://www.excelformeln.de/formeln.html?gruppe=2
Leider nicht ganz einschlägig:
http://www.excelformeln.de/formeln.html?welcher=350
daher wahrscheinlich VBA notwendig.
--
Hallo + Gruss Alexander (WinXP Home SP1 - Office 2000 SP3) 6----5----7-2
Eike Bimczok
2005-10-17 18:37:30 UTC
Permalink
Hallo Günter,

kopiere folgenden Code in ein Modul deiner Arbeitsmappe. Du erhältst
damit eine benutzerdefinierte Funktion nach deinen Wünschen.

Das Ergebnis sieht dann so aus:

A |B
--------------------------------|---------------------------
Straßenname 23a |Straßenname 23 a
Straßenname23 |Straßenname 23
Heinrich Heine Straße 23b |Heinrich Heine Straße 23 b
Heinrich-Heine-Straße 23a |Heinrich-Heine-Straße 23 a

[B1]: =formatAdress(A1)
[B2]: =formatAdress(A2)
[B3]: =formatAdress(A3)
[B4]: =formatAdress(A4)



Gruß
Eike



Function formatAdress(a As Range)
'by E.Bimczok
'17.10.2005

Dim AdressStr As String
Dim posNoStart As Long, posNoEnd As Long

If a.Count = 1 Then
AdressStr = a.Value
posNoStart = NoStart(AdressStr)
posNoEnd = NoEnd(AdressStr)
If posNoStart > 0 And posNoEnd > 0 Then
If Mid(AdressStr, posNoStart - 1, 1) <> " " Then
formatAdress = Left(AdressStr, posNoStart - 1) & " " &
Mid(AdressStr, posNoStart)
End If
If Len(AdressStr) > posNoEnd Then
formatAdress = Left(AdressStr, posNoEnd) & " " & Mid(AdressStr,
posNoEnd + 1)
End If
End If
Else
formatAdress = "Error"
End If

End Function

Function NoStart(a As String)
Dim temp As String
For k = 1 To Len(a)
temp = Asc(Mid(a, k, 1))
If temp < 58 And temp > 47 Then
NoStart = k
Exit Function
End If
Next k
NoStart = 0
End Function
Function NoEnd(a As String)
For k = Len(a) To 1 Step -1
temp = Asc(Mid(a, k, 1))
If temp < 58 And temp > 47 Then
NoEnd = k
Exit Function
End If
Next k
NoEnd = 0
End Function
Post by Alexander Wolff
Post by worstoj
"Straßenname 23 b" diese Schreibweise wäre korrekt. Doch was mache
"Straßenname 23a"
"Straßenname22"
"Heinrich Heine Straße 23b"
"Heinrich-Heine-Straße 23a"
http://www.excelformeln.de/formeln.html?gruppe=2
http://www.excelformeln.de/formeln.html?welcher=350
daher wahrscheinlich VBA notwendig.
worstoj
2005-10-18 04:59:18 UTC
Permalink
Hallo Eike,
die Lösung ist toll. Habe es soeben ausprobiert, es funktioniert. Ich
habe dadurch sehr viel Zeit sparen können und meinen Finger das
Korrekturschreiben erspart. Ich kann die Lösung nur empfehlen.
Danke
Mit freundlichen Grüßen
Günter
Post by Eike Bimczok
Hallo Günter,
kopiere folgenden Code in ein Modul deiner Arbeitsmappe. Du erhältst
damit eine benutzerdefinierte Funktion nach deinen Wünschen.
A |B
--------------------------------|---------------------------
Straßenname 23a |Straßenname 23 a
Straßenname23 |Straßenname 23
Heinrich Heine Straße 23b |Heinrich Heine Straße 23 b
Heinrich-Heine-Straße 23a |Heinrich-Heine-Straße 23 a
[B1]: =formatAdress(A1)
[B2]: =formatAdress(A2)
[B3]: =formatAdress(A3)
[B4]: =formatAdress(A4)
Gruß
Eike
Function formatAdress(a As Range)
'by E.Bimczok
'17.10.2005
Dim AdressStr As String
Dim posNoStart As Long, posNoEnd As Long
If a.Count = 1 Then
AdressStr = a.Value
posNoStart = NoStart(AdressStr)
posNoEnd = NoEnd(AdressStr)
If posNoStart > 0 And posNoEnd > 0 Then
If Mid(AdressStr, posNoStart - 1, 1) <> " " Then
formatAdress = Left(AdressStr, posNoStart - 1) & " " &
Mid(AdressStr, posNoStart)
End If
If Len(AdressStr) > posNoEnd Then
formatAdress = Left(AdressStr, posNoEnd) & " " & Mid(AdressStr,
posNoEnd + 1)
End If
End If
Else
formatAdress = "Error"
End If
End Function
Function NoStart(a As String)
Dim temp As String
For k = 1 To Len(a)
temp = Asc(Mid(a, k, 1))
If temp < 58 And temp > 47 Then
NoStart = k
Exit Function
End If
Next k
NoStart = 0
End Function
Function NoEnd(a As String)
For k = Len(a) To 1 Step -1
temp = Asc(Mid(a, k, 1))
If temp < 58 And temp > 47 Then
NoEnd = k
Exit Function
End If
Next k
NoEnd = 0
End Function
Post by Alexander Wolff
Post by worstoj
"Straßenname 23 b" diese Schreibweise wäre korrekt. Doch was mache
"Straßenname 23a"
"Straßenname22"
"Heinrich Heine Straße 23b"
"Heinrich-Heine-Straße 23a"
http://www.excelformeln.de/formeln.html?gruppe=2
http://www.excelformeln.de/formeln.html?welcher=350
daher wahrscheinlich VBA notwendig.
Eberhard Funke
2005-10-17 19:24:57 UTC
Permalink
Post by worstoj
Hallo Newsgroupler,
ich habe eine Exceladresstabelle bekommen in der die Straße wie folgt
"Straßenname 23 b" diese Schreibweise wäre korrekt. Doch was mache
"Straßenname 23a"
"Straßenname22"
"Heinrich Heine Straße 23b"
"Heinrich-Heine-Straße 23a"
Hausnummer und Buchstabe sollen durch ein Leerzeichen getrennt werden.
Da die Adressenliste ca. 6000 Adressen beinhaltet, ist eine manuelle
Korrektur zu aufwendig.
Ich arbeite mit Excel 2000.
Mit freundlichen Grüßen
Günter
Hallo Günter,

es geht also NUR um die Trennung von Hausnummer und folgendem Buchstaben
getrennt werden ?(Es soll nicht zusätzlich - Dein Beispiel: "Straßenname22"
ist ein Schreibfehler - der Strassenname von der Hausnummer getrennt
werden)?
Wenn auf die Hausnummer kein oder NUR EIN Buchstabe folgt, dann

=WENN(NICHT(ISTZAHL(RECHTS(A12;1)*1));LINKS(A12;LÄNGE(A12)-1)&"
"&RECHTS(A12;1);A12)
--
Gruß Eberhard
XL 2000
Eberhard(punkt)Funke(at)t-online.de
Eberhard Funke
2005-10-17 19:51:56 UTC
Permalink
Post by Eberhard Funke
=WENN(NICHT(ISTZAHL(RECHTS(A12;1)*1));LINKS(A12;LÄNGE(A12)-1)&"
"&RECHTS(A12;1);A12)
Ich sehe gerade, mein Newsreader hat an einer entscheidenden Stelle einen
Zeilenumbruch gemacht. Zwischen den beiden " " befindet sich ein
Leerzeichen.
--
Gruß Eberhard
XL 2000
Eberhard(punkt)Funke(at)t-online.de
worstoj
2005-10-18 05:07:49 UTC
Permalink
Danke für die Mühe. Es wird zwar das letzte Zeichen abgefragt und
heraus gezogen, aber damit habe ich noch nicht mein Endergebnis, z. B.
statt nur "b", soll "Straße 12 b" heraus kommen. "Straßenname12" ist
kein Schreibfehler von mir, tritt in der Tabelle auch auf, muss also
auch getrennt werden.
Ich habe mich für die Lösung von Eike entschieden.
Danke
Mit freundlichen Grüßen
Günter
Eberhard Funke
2005-10-18 09:25:32 UTC
Permalink
Post by worstoj
Danke für die Mühe. Es wird zwar das letzte Zeichen abgefragt und
heraus gezogen, aber damit habe ich noch nicht mein Endergebnis, z. B.
statt nur "b", soll "Straße 12 b" heraus kommen.
Bei mir wird aus Heinrich Heine Straße 23b
Heinrich Heine Straße 23 b
so wie es sein soll.
--
Gruß Eberhard
XL 2000
Eberhard(punkt)Funke(at)t-online.de
Marcus O. M. Grabe
2005-10-18 00:13:32 UTC
Permalink
Post by worstoj
Hallo Newsgroupler,
ich habe eine Exceladresstabelle bekommen in der die Straße wie folgt
"Straßenname 23 b" diese Schreibweise wäre korrekt. Doch was mache
"Straßenname 23a"
"Straßenname22"
"Heinrich Heine Straße 23b"
"Heinrich-Heine-Straße 23a"
Hausnummer und Buchstabe sollen durch ein Leerzeichen getrennt werden.
Da die Adressenliste ca. 6000 Adressen beinhaltet, ist eine manuelle
Korrektur zu aufwendig.
Ich arbeite mit Excel 2000.
Mit freundlichen Grüßen
Günter
Hi Günter,

habe leider keine Zeit, etwas auszutüfteln, aber nur zu Deinem
Anliegen, es wirklich nach den Regeln der Rechtschreibung korrekt
hinzubekommen, jedenfalls beim Straßennamen: Das wirst Du wohl nie
schaffen, denn z.B. "Frankfurterstraße" wäre korrekt "Frankfurter
Straße", "Römerplatz" bleibt aber "Römerplatz".

Gruß Marcus
Loading...