Supportnet / Forum / Tabellenkalkulation
Text auf mehrere Zellen trennen, verketten rückgängig
Frage
Hi,
ich habe eine Liste mit Namen in Spalte A. A2 wäre dann beispielsweise "Jürgen Klinsmann".
Jetzt möchte ich in einem Feld den Vornamen, und in einem anderen Feld den Nachnamen haben. Im Grunde hab ich eine Lösung gefunden, die aber bei Doppelnamen wie "Jürgen Barbara Klinsmann" zu Problemen führt, weil der Mittelname "Barbara" dann mit dem Nachnamen "Klinsmann" aufgeführt wird. Außerdem sollen ja auch Vor- und Mittelname in einer Zelle stellen.
Hier meine bisher bester Versuch:
Vorname:
=LINKS(A2;FINDEN(" ";A2;1)-1)
Nachname:
=TEIL(A2;FINDEN(" ";A2;1)+1;50)
Da ist der Mittelname aber leider noch mit beim Nachnamen.
Meine Idee für den Nachnamen: Im Grunde müsste man die Leerzeichen von hinten zählen, das von der Gesamtlänge des Textes abziehen und dann genau so viele Zeichen von hinten anzeigen lassen. Für den Vornamen genau anders rum.
Bin dankbar für jeden Tip.
Timbo
Antwort 1 von Saarbauer
Hallo,
versuch es mal damit
=TEIL(B1;FINDEN(" ";B1;1);FINDEN(" ";B1;FINDEN(" ";B1;1)+1)+1-FINDEN(" ";B1;1))
Gruß
Helmut
versuch es mal damit
=TEIL(B1;FINDEN(" ";B1;1);FINDEN(" ";B1;FINDEN(" ";B1;1)+1)+1-FINDEN(" ";B1;1))
Gruß
Helmut
Antwort 2 von coros
Hallo Timbo,
hier noch eine Formel, mit der es funktionieren sollte.
=TEIL(A2;FINDEN(" ";A2;1)+1;LÄNGE(A2)-(LÄNGE(A2)-FINDEN(" ";A2;1)))
Ich hoffe, es hilft?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
hier noch eine Formel, mit der es funktionieren sollte.
=TEIL(A2;FINDEN(" ";A2;1)+1;LÄNGE(A2)-(LÄNGE(A2)-FINDEN(" ";A2;1)))
Ich hoffe, es hilft?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von Saarbauer
Hallo,
fiel mir gerade auf, es muss bei dir natürlich A2 heissen und nicht B1
@ coros, bei deiner Lösung kommt das gleiche Ergebnis raus wie bei @timpe. Wobei bei ihn die Anzahl der Zeichen auf 50 begrenzt ist. und ich habe es so verstanden, dass er nur den Mitleren Namen haben will.
für den Nachnamen kann man
=RECHTS(A2;LÄNGE(A2)-FINDEN(" ";A2;FINDEN(" ";A2;1)+1))
benutzen
Gruß
Helmut
fiel mir gerade auf, es muss bei dir natürlich A2 heissen und nicht B1
@ coros, bei deiner Lösung kommt das gleiche Ergebnis raus wie bei @timpe. Wobei bei ihn die Anzahl der Zeichen auf 50 begrenzt ist. und ich habe es so verstanden, dass er nur den Mitleren Namen haben will.
für den Nachnamen kann man
=RECHTS(A2;LÄNGE(A2)-FINDEN(" ";A2;FINDEN(" ";A2;1)+1))
benutzen
Gruß
Helmut
Antwort 4 von coros
Hallo Helmut,
sorry, aber wenn ich das richtig verstanden habe, wollte Timbo noch den mittleren Namen herausfinden. Und genau das macht meine Formel, wenn ich mich nicht ganz täusche. Die Formeln für Vor- und Nachnamen hatte Timbo ja schon.
MfG,
Oliver
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
sorry, aber wenn ich das richtig verstanden habe, wollte Timbo noch den mittleren Namen herausfinden. Und genau das macht meine Formel, wenn ich mich nicht ganz täusche. Die Formeln für Vor- und Nachnamen hatte Timbo ja schon.
MfG,
Oliver
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Antwort 5 von timpe
Hallo zusammen,
danke erst mal für die Tips. Leider ist noch kein so richtiger dabei. Noch mal genau was ich machen möchte:
In Zelle A2 steht "Jürgen Barbara Klinsmann". In Zelle B2 soll der Vorname, also "Jürgen Barbara" und in Zelle C2 der Nachname, also "Klinsmann" stehen. Wenn eine Person keinen Zweitnamen hat, sollen der Vorname eben ohne den Zweitnamen angezeigt werden.
Eure Tipps haben bei mir folgendes ergeben:
Helmuts Code ergab nur den Zweitnamen, allerdings auch noch angeführt von einem Leerzeichen.
Coros Code ergab bei mir etwas ganz merkwürdiges. Heraus kam ein Text, beginnend beim Mittelnamen, das die Länge des Vornamens +1 hat.
danke erst mal für die Tips. Leider ist noch kein so richtiger dabei. Noch mal genau was ich machen möchte:
In Zelle A2 steht "Jürgen Barbara Klinsmann". In Zelle B2 soll der Vorname, also "Jürgen Barbara" und in Zelle C2 der Nachname, also "Klinsmann" stehen. Wenn eine Person keinen Zweitnamen hat, sollen der Vorname eben ohne den Zweitnamen angezeigt werden.
Eure Tipps haben bei mir folgendes ergeben:
Helmuts Code ergab nur den Zweitnamen, allerdings auch noch angeführt von einem Leerzeichen.
Coros Code ergab bei mir etwas ganz merkwürdiges. Heraus kam ein Text, beginnend beim Mittelnamen, das die Länge des Vornamens +1 hat.
Antwort 6 von timpe
Hab grade noch den Code für den Nachnamen von Saarbauer gefunden. Allerdings funktioniert das nicht, wenn die Person keinen Zweinamen hat. Dann kommt #WERT! raus.
Antwort 7 von Saarbauer
Hallo @coros,
du hast es richtig verstanden, aber ich habe es mit deiner Formel versucht und hatte den Mittleren- und Nachnamen in einer Zelle, bei Nutzung der in AW 2 genannten Formel bekomme ich es nicht eindeutig hin. Sobald ich einen andere Konbnation bei den Namen nutze funktioniert es nicht mehr
Gruß
Helmut
du hast es richtig verstanden, aber ich habe es mit deiner Formel versucht und hatte den Mittleren- und Nachnamen in einer Zelle, bei Nutzung der in AW 2 genannten Formel bekomme ich es nicht eindeutig hin. Sobald ich einen andere Konbnation bei den Namen nutze funktioniert es nicht mehr
Gruß
Helmut
Antwort 8 von JoeKe
Antwort 9 von coros
Hallo Helmut,
Du hast recht. Naja, Formeln sind halt nicht mein Steckenpferd. ;-)
@timpe : Jöke hat ja schon eine Lösung präsentiert. Aber ich habe auch noch eine. Zwar keine in Formelform, sondern eine in VBA (was mir ja bekanntlich besser liegt). Kopiere nachfolgendes Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.
Mit obigen Makro werden die Vornamen vom Nachnamen getrennt. Funktioniert aber im Moment nur bei zwei Vornamen. Aber mehr war ja auch nicht gefordert. ;-)
Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Du hast recht. Naja, Formeln sind halt nicht mein Steckenpferd. ;-)
@timpe : Jöke hat ja schon eine Lösung präsentiert. Aber ich habe auch noch eine. Zwar keine in Formelform, sondern eine in VBA (was mir ja bekanntlich besser liegt). Kopiere nachfolgendes Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.
Option Explicit
Sub Namen_trennen()
Dim i As Integer, Länge As Variant, Start As Variant, Mitte As Variant
For i = 1 To Range("A65536").End(xlUp).Row
Länge = Len(Cells(i, 1))
Start = InStr(Cells(i, 1), Chr(32))
Mitte = InStr(Mid(Cells(i, 1), Start + 1, Länge), Chr(32))
On Error Resume Next
´Vornamen
Cells(i, 2) = Mid(Cells(i, 1), 1, Start + Mitte - 1)
´Nachnamen
Cells(i, 3) = Mid(Cells(i, 1), Start + Mitte + 1, Länge)
Next
End Sub
Mit obigen Makro werden die Vornamen vom Nachnamen getrennt. Funktioniert aber im Moment nur bei zwei Vornamen. Aber mehr war ja auch nicht gefordert. ;-)
Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 10 von coros
Hi,
ich nochmal. Was ich vergessen habe zu erwähnen, die Vornamen werden in Spalte B und die Nachnamen in Spalte C aufgeführt. Durchlaufen werden alle Namen, die in Spalte A stehen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ich nochmal. Was ich vergessen habe zu erwähnen, die Vornamen werden in Spalte B und die Nachnamen in Spalte C aufgeführt. Durchlaufen werden alle Namen, die in Spalte A stehen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 11 von coros
So,
nochmal ich. Ich hatte beim Posten vergessen, dass in dem Forum Hochkommas vemurkst werden. Somit wird beim Kopieren des Makros ein Fehler kommen. Daher nochmal den Code ohne Hochkommas.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nochmal ich. Ich hatte beim Posten vergessen, dass in dem Forum Hochkommas vemurkst werden. Somit wird beim Kopieren des Makros ein Fehler kommen. Daher nochmal den Code ohne Hochkommas.
Option Explicit
Sub Namen_trennen()
Dim i As Integer, Länge As Variant, Start As Variant, Mitte As Variant
For i = 1 To Range("A65536").End(xlUp).Row
Länge = Len(Cells(i, 1))
Start = InStr(Cells(i, 1), Chr(32))
Mitte = InStr(Mid(Cells(i, 1), Start + 1, Länge), Chr(32))
On Error Resume Next
Rem Vornamen
Cells(i, 2) = Mid(Cells(i, 1), 1, Start + Mitte - 1)
Rem Nachnamen
Cells(i, 3) = Mid(Cells(i, 1), Start + Mitte + 1, Länge)
Next
End Sub
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 12 von Saarbauer
Hallo,
in dem Fall nutze diese Formel für alle Zeilen
=WENN(ISTFEHLER(TEIL(A2;FINDEN(" ";A2;1);FINDEN(" ";A2;FINDEN(" ";A2;1)+1)+1-FINDEN(" ";A2;1)));"";TEIL(A2;FINDEN(" ";A2;1);FINDEN(" ";A2;FINDEN(" ";A2;1)+1)+1-FINDEN(" ";A2;1)))
Gruß
Helmut
in dem Fall nutze diese Formel für alle Zeilen
=WENN(ISTFEHLER(TEIL(A2;FINDEN(" ";A2;1);FINDEN(" ";A2;FINDEN(" ";A2;1)+1)+1-FINDEN(" ";A2;1)));"";TEIL(A2;FINDEN(" ";A2;1);FINDEN(" ";A2;FINDEN(" ";A2;1)+1)+1-FINDEN(" ";A2;1)))
Gruß
Helmut
Antwort 13 von timpe
Danke für die vielen Tipps. Es führen eben doch immer mehrere Wege nach Rom. Es war nicht mein Ziel das zu beweisen, aber getan haben wir es trotzdem.
Noch funktionieren nicht alle Lösungen 100%ig bei mir. Aber der Tipp von Jöke hat geholfen, auch wenn´s etwas schwer fällt das nachzuvollziehen. Aber auch hier scheint eine seltsame Beschränkung drin zu stecken. An einer Stelle wird geprüft, ob ein Werte kleiner als 97 ist...
Aber egal, hauptsache es funzt.
Danke an ALLE!
Noch funktionieren nicht alle Lösungen 100%ig bei mir. Aber der Tipp von Jöke hat geholfen, auch wenn´s etwas schwer fällt das nachzuvollziehen. Aber auch hier scheint eine seltsame Beschränkung drin zu stecken. An einer Stelle wird geprüft, ob ein Werte kleiner als 97 ist...
Aber egal, hauptsache es funzt.
Danke an ALLE!