Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

letztes Wort aus String extrahieren

472 views
Skip to first unread message

Markus Bärlocher

unread,
Dec 24, 2005, 7:25:31 AM12/24/05
to
Liebe Erfahrene,

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

Andreas Stoye

unread,
Dec 24, 2005, 9:13:00 AM12/24/05
to
Hi 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:

Andreas Stoye

unread,
Dec 24, 2005, 9:39:27 AM12/24/05
to
Korrektur: in B1: =WENN(TYP(SUCHEN(" ";A1;1))=16;A1;TEIL(A1;SUCHEN("
";A1;1)+1;LÄNGE(A1)))
usw.
mfg Andreas

Herbert Taferner

unread,
Dec 24, 2005, 9:49:56 AM12/24/05
to
Hallo Markus,

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


Thomas Ramel

unread,
Dec 24, 2005, 11:07:06 AM12/24/05
to
Grüezi Markus

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)

Eberhard Funke

unread,
Dec 24, 2005, 5:04:26 PM12/24/05
to
Am Sat, 24 Dec 2005 17:07:06 +0100 schrieb Thomas Ramel:

>> "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

Helmut Weber

unread,
Dec 26, 2005, 8:24:42 AM12/26/05
to
Hallo Markus,

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


0 new messages