meine Tante hat Ahnenforschung gemacht und 2500 Namen aufgeschrieben,
z.B.:
"Hans Martin Josef Sebastian Müller" oder "Sophie Müller".
ich möchte für jede Zeile aus jedem String den Nachnamen ausschneiden
und in eine neue Spalte einfügen. Nachname ist immer das letzte Wort
des Strings.
Ergebnis soll sein:
Spalte A: Lang-Name (Quelle)
Spalte B: alle Vornamen (ohne Leerzeichen am Stringende)
Spalte C: Nachname (ohne Leerzeichen)
(mit "Text in Spalten" komme ich nicht weiter)
Herzlichen Dank und Frohe Weihnachten!
Markus
eine nicht tolle aber funktionierende Idee:
In A1 der komplette Name
In B1: =WENN(TYP(SUCHEN(" ";A1;1)>0)=16;A1;TEIL(A1;SUCHEN("
";A1;1)+1;LÄNGE(A1)))
Nach C1, D1 z.B. bis G1 nach rechts kopieren.
In die nächste Spalte (z.B. H1: =LINKS(A1;LÄNGE(A1)-LÄNGE(G1)-1)
Das lässt sich natürlich auch anders anordnen, die Zwischenspalten
ausblenden oder sonst was. Na ja,. für kurz vor Bescherung nicht ganz
schlecht, oder?
mfg Andreas
Markus Bärlocher schrieb:
versuchs mal so,
in C1
=RECHTS(A1;LÄNGE(A1)-FINDEN("#";WECHSELN(A1;"
";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";"")))))
in B1
=LINKS(A1;LÄNGE(A1)-(LÄNGE(C1)+1))
und soweit ziehen wie nötig
eventuell vorhandene Leerzeichen entfernen
mit z. B. =GLÄTTEN(A1)
ein frohes Fest
mfg Herbert
Markus Bärlocher schrieb am 24.12.2005
> meine Tante hat Ahnenforschung gemacht und 2500 Namen aufgeschrieben,
> z.B.:
> "Hans Martin Josef Sebastian Müller" oder "Sophie Müller".
>
> ich möchte für jede Zeile aus jedem String den Nachnamen ausschneiden
> und in eine neue Spalte einfügen. Nachname ist immer das letzte Wort
> des Strings.
>
> Ergebnis soll sein:
> Spalte A: Lang-Name (Quelle)
> Spalte B: alle Vornamen (ohne Leerzeichen am Stringende)
> Spalte C: Nachname (ohne Leerzeichen)
Als weiterer Vorschlag kannst Du die folgenden Formeln verwenden:
B1:
=LINKS(A1;FINDEN("#";WECHSELN(A1;" ";"#";
LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))-1)
C1
=WECHSELN(A1;B1&" ";"")
Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Microsoft Excel - Die ExpertenTipps:
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
>> "Hans Martin Josef Sebastian Müller" oder "Sophie Müller".
>>
>> ich möchte für jede Zeile aus jedem String den Nachnamen ausschneiden
>> und in eine neue Spalte einfügen. Nachname ist immer das letzte Wort
>> des Strings.
>
> Als weiterer Vorschlag kannst Du die folgenden Formeln verwenden:
>
> B1:
> =LINKS(A1;FINDEN("#";WECHSELN(A1;" ";"#";
> LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))-1)
>
> C1
> =WECHSELN(A1;B1&" ";"")
Hallo Thomas und Markus,
in Anlehnung an Deine Vorschlag, Thomas:
B1=WECHSELN(A1;" ";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";"")))
B1 kopieren und Einfügen --> Werte.
Dann Menü Daten --> Text in Spalten --> "getrennt" wählen --> unter
"andere" das # eingeben.
Nur spaßeshalber mal eine Lösung ohne Wechseln:
B1=LINKS(A1;MAX((TEIL(A1;ZEILE(INDIREKT("1:"&LÄNGE(A1)));1)="
")*(ZEILE(INDIREKT("1:"&LÄNGE(A1)))))-1)
C1=TEIL(A1;MAX((TEIL(A1;ZEILE(INDIREKT("1:"&LÄNGE(A1)));1)="
")*(ZEILE(INDIREKT("1:"&LÄNGE(A1)))))+1;LÄNGE(A1))
Beides sind Matrixformeln und müssen mit der Tastenkombination
Shift+Strg+Enter eingegeben werden.
--
Gruß Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
jetzt bist Du ja doch bei Excel gelandet. ;-)
Wie wäre es denn mit benutzerdefinierten Funktionen?
Finde ich viel einfacher als Excel-Formeln,
vermutlich ist das aber so, weil ich mich den
Aufgaben von der Seite der Programmierer nähere,
und dann kommt man zu solchen Ergebnissen:
Public Function Spalte2(sTmp As String) As String
Spalte2 = Trim(Left(sTmp, InStrRev(sTmp, " ")))
End Function
Public Function Spalte3(sTmp As String) As String
Spalte3 = Trim(Right(sTmp, Len(sTmp) - InStrRev(sTmp, " ")))
End Function
--
Gruß
Helmut Weber, MVP WordVBA
"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003