Straßennamen von Nummern trennen
Hallo,
ich habe mal wieder ein Problem zu lösen und hoffe Ihr könnt mir helfen. Ich möchte die Straßen/Nr., die zusammen in einer Zelle stehen trennen in je eine Zelle. Das Problem ist nur, dass die Nummern manchmal mit Leerzeichen z.B. 8 b drin stehen und dann übernimmt er die 8 nicht in der 2. Spalte.
Folgende Formeln nutze ich:
für die Namen - =LINKS(A2;LÄNGE(A2)-LÄNGE(C2)-1)
für die Zahlen - =TEIL(A2;SUCHEN("#";WECHSELN(A2;" ";"#";LÄNGE(A2)-LÄNGE(WECHSELN(A2;" ";))))+1;9)
Was ist denn hier falsch?
Gruß und Dank im Voraus. tuerpi111
Antwort schreiben
Antwort 1 von MixMax vom 26.09.2020, 11:30 Options
Beachte es gibt Straßen die einfach "Straße 11" heissen... in manchen großstädten (Berlin oder Frankfurt glaube ich)
Antwort 2 von tuerpi111 vom 26.09.2020, 11:35 Options
Hi, wo ist das Problem, das wird prima getrennt, nur nicht wenn z.B. 11 b steht. Steht 11b, ohne Leerzeichen geht es auch.
Gruß tuerpi111
Antwort 3 von nighty vom 26.09.2020, 12:35 Options
hi all :-)
es gibt mit formeln sicher elegantere methoden :-)
vielleicht meldet sich ja noch der eine oder andere :-))
bis dahin eine benutzerdefinierte loesung :-)
gruss nighty
a1 ist adresse
b1 ist LINKS(A1;(LÄNGE(A1)-LÄNGE(C1)))
c1 ist Sumtext(A1;1)
Function Sumtext(Zellen As Range, zaehler1 As Integer) As String
Application.Volatile
Dim zeich1 As Integer
Dim schalter As Boolean
Dim zaehler3 As Integer
ReDim zaehler2(Len([Zellen])) As String
zaehler3 = 1
If zaehler1 > Len([Zellen]) Then zaehler1 = Len([Zellen])
For zeich1 = Len([Zellen]) To 1 Step -1
If Mid([Zellen], zeich1, 1) Like "[0-9]" = True Then
If a = 0 Then a = zeich1
zaehler2(zaehler3) = Mid([Zellen], zeich1, 1) & zaehler2(zaehler3)
schalter = True
End If
If schalter = True And Mid([Zellen], zeich1, 1) Like "[0-9]" = False Then
zaehler3 = zaehler3 + 1
schalter = False
End If
Next zeich1
Sumtext = zaehler2(zaehler1) & Mid([Zellen], a + 1, Len([Zellen]) - Len(zaehler2(zaehler1)))
End Function
Antwort 4 von nighty vom 26.09.2020, 12:43 Options
hi all :-)
vielleicht das es noch jemanden interessiert wie es funktioniert :-)
gruss nighty
die function basiert auf isolierung von zahlenbloecken anhand des 2 parameters der zur zeit den wert von 1 hat
der angegebene string rueckwaerts gelesen und der 1 zahlenblock isoliert.der eventuelle rest des strings anhand der position der ersten gelesenen zahl bezugnehmend angefuegt
Antwort 5 von Arno_Nym vom 26.09.2020, 12:46 Options
Wenn im Straßennamen keine Leerzeichen vorkommen, dann sollte dies recht gut gehen:
für den Namen: =TEIL(A2;1;SUCHEN(" ";A2)-1)
für die Nummern: =TEIL(A2;SUCHEN(" ";A2)+1;LÄNGE(A2))
Arno
Antwort 6 von nighty vom 26.09.2020, 12:48 Options
hi arno :-)
bei mir mit leerzeichen hihi
gruss nighty
Antwort 7 von Arno_Nym vom 26.09.2020, 12:49 Options
Oder etwas abgewandelt:
=GLÄTTEN(TEIL(A1;1;SUCHEN(" ";A1)))
=GLÄTTEN(TEIL(A1;SUCHEN(" ";A1);LÄNGE(A1)))
Arno
Antwort 8 von Arno_Nym vom 26.09.2020, 12:51 Options
Hi nighty,
klar, deine Lösung ist umfassender.
Aber wenn die Bedingung erfüllt ist, dann ist die "Billigvariante" vielleicht etwas durchsichtiger für den Normalanwender ;o)
Arno
Antwort 9 von nighty vom 26.09.2020, 13:38 Options
hi arno :-)
hab mal bisl gegoogeln und glaube nun das es keine reine formelloesungt gibt
gruss nighty
Antwort 10 von tuerpi111 vom 26.09.2020, 13:42 Options
Hi,
Arno und nighty, wenn der Straßenname "Auf der Kirsche 4 b" lautet, trennt Eure Formel "Auf" "der Kirsche 4 b" :-(
Ist nicht das, was ich brauche. Das mit VBA verstehe ich so nicht nighty. Habe ich noch nie gemacht. Hilfe :-(
Gruß tuerpi111
Antwort 11 von Arno_Nym vom 26.09.2020, 13:45 Options
Deshalb hatte ich ja die Einschränkung gemacht:
"Wenn im Straßennamen keine Leerzeichen vorkommen, dann..."
Arno
Antwort 12 von nighty vom 26.09.2020, 13:47 Options
hi all :-)
eine andere loesung gibt es aber nicht
daher fuege die function folgendermassen ein
alt+f11/projektexplorer/allgemeines modul
die formelsyntax ist ja oben beschrieben
gruss nighty
Antwort 13 von tuerpi111 vom 26.09.2020, 14:00 Options
Hi,
nighty habe ich gemacht, flutscht aber nicht :-(
Gruss tuerpi111
Antwort 14 von nighty vom 26.09.2020, 14:03 Options
hi tuerpi111 :-)
schreib mal eine mustertabelle mit komplexen strassennamen in spalte a und schick sie mir zu ich fuege alles ein dann
bitte mit eindeutigen betreff
oberley@t-online.de
gruss nighty
Antwort 15 von tuerpi111 vom 26.09.2020, 14:05 Options
danke nighty, ich habs gerafft, habe vorne die Formeln nicht rein gehauen, es funkt jetzt. gruss tuerpi111
Antwort 16 von nighty vom 26.09.2020, 14:07 Options
hi tuerpi111 :-)
fein :-)
gruss nighty
Antwort 17 von nighty vom 01.11.2020, 08:03 Options
hi all :-)
noch ein wenig optimiert und vielleicht ueberschaubarer :-))
gruss nighty
Rem a1 ist adresse
Rem b1 ist =LINKS(A1;(LÄNGE(A1)-LÄNGE(C1)))
Rem c1 ist =StrNr(A1)
Function StrNr(Zellen As Range) As String
Application.Volatile
Dim Schalter As Boolean
Dim MidPos As Integer
Dim IndPos As Integer
Dim StaPos As Integer
ReDim Feld(Len([Zellen])) As String
IndPos = 1
For MidPos = Len([Zellen]) To 1 Step -1
If Mid([Zellen], MidPos, 1) Like "[0-9-]" = True Then
If StaPos = 0 Then StaPos = MidPos
Feld(IndPos) = Mid([Zellen], MidPos, 1) & Feld(IndPos)
Schalter = True
End If
If Schalter = True And Mid([Zellen], MidPos, 1) Like "[0-9-]" = False Then
IndPos = IndPos + 1
Schalter = False
End If
Next MidPos
StrNr = Feld(1) & Mid([Zellen], StaPos + 1, Len([Zellen]) - Len(Feld(1)))
End Function