Supportnet Computer
Planet of Tech

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

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.

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

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.

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.

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

Antwort 8 von JoeKe

Hallo timpe,

sieh dir das mal an.

Gruß

JöKe

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.

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.

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.

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

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!