Das grosse Archiv mit 640
VBA-freien Formellösungen und Tips
 
   
 
 ÜBER UNS   NEWS   FORMELN   TIPPS   KONTAKT   FORUM   LINKS 
   
Übersicht   Zauberbuch   Rätselbuch   Sparbuch   Bücher-Downloads / Errata  
 
Textfunktionen (2) ->

Vornamen (auch doppelte) und Nachnamen (mit Titel) trennen (158)
 
 
Aufgabe
Vorname und Nachname in einer einzigen Zelle sollen auf zwei Zellen aufgeteilt werden.
Es sollen auch zwei oder keine Vornamen vorkommen dürfen; - genauso wie Zusätze zum Nachnamen.

Beispiele:
Cher wird zu Cher
Petra Rauhut wird zu Petra / Rauhut
Anna Marlen Borchardt wird zu Anna Marlen / Borchardt
Carl Maria von Weber wird zu Carl Maria / von Weber
Fritz Graf zu Eulenburg und Hertefeld wird zu Fritz Graf / zu Eulenburg und Hertefeld
Gräfin Carlotta Theresa von der Lippe wird zu Gräfin Carlotta Theresa / von der Lippe
Prof. Dr. habil. Franz ob der Tauber wird zu Prof. Dr. habil. Franz / ob der Tauber


Lösung
Der komplett ausgeschriebene Name steht in A1.

Vorname in B1 (für den Normalfall: nur ein Vorname und ein Nachname)
=LINKS(A1;FINDEN(" ";A1))

in B1: max. 2 Vornamen, Adelstitel, akademische Grade, etc.
(funktioniert logischerweise auch für den "Normalfall")

=WENN(ODER(ISTFEHLER(FINDEN(" ";A1));CODE(LINKS(A1;1))>96);"";WENN(UND(ISTFEHLER(FINDEN("ob ";A1));ISTFEHLER(FINDEN("von ";A1));ISTFEHLER(FINDEN("zu ";A1))); WENN(UND(CODE(TEIL(A1;FINDEN(" ";A1)+1;1)) < 97;LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";)) > 1);TEIL(A1;1;FINDEN(" ";A1;FINDEN(" ";A1)+1));TEIL(A1;1;FINDEN(" ";A1)));LINKS(A1; WENN(NICHT(ISTFEHLER(FINDEN("von ";A1)));FINDEN("von ";A1);WENN(NICHT(ISTFEHLER(FINDEN("zu ";A1)));FINDEN("zu ";A1);FINDEN("ob ";A1)))-1)))

Alternative von Franz Pölt:
=LINKS(A1;VERWEIS(999;SUCHEN(" ";GLÄTTEN(A1);SPALTE(A$1:IQ$1)))-SUMME(MMULT((WECHSELN(A1;{"von ";"van ";"und ";"der ";"zu ";"ob "};)<>A1)*{4;4;4;4;3;3};1)))

Nachname in C1
=RECHTS(A1;LÄNGE(A1)-LÄNGE(B1))

Alternative (als Array-Formel):
Nachname in C1:
{=WENN(ANZAHL(FINDEN({" zu ";" von ";" ob ";" de ";" van ";" auf ";" vom "};A1));TEIL(A1;VERWEIS(99;FINDEN({" zu ";" von ";" ob ";" de ";" van ";" auf ";" vom "};A1))+1;99);TEIL(A1;MAX((TEIL(A1;SPALTE(A$1:IQ$1);1)=" ")*SPALTE(A$1:IQ$1))+1;99))}

Vorname:
=GLÄTTEN(LINKS(A1;LÄNGE(A1)-LÄNGE(C1)))

Erläuterung
Die Array-Alternative oder die von FP ist prinzipiell besser (und kürzer), läßt mehr als 2 Vornamen zu und trennt auch Namen in kleinbuchstaben.
Der Nachteil: man muß alle Namenszusätze definitiv vorgeben; - in der Ursprungsformel wird außer den dominierenden "von "; "zu "; "ob " nach einem Kleinbuchstaben gesucht (bei exotischen/ausländischen - also unbekannten - Namenszusätzen noch unschlagbar).
Das non-plus-ultra wird ne' Kombi von beiden werden; - wir tun was!
WF

In seltenen Fällen gibt es auch Textimporte, die andere (unsichtbare) Zeichen als Leerzeichen verwenden. Dann funktionieren obige Formeln nicht, da sie nach "echten" Leerzeichen suchen. In einem Vorab-Schritt müssen diese also umgewandelt werden.

 
    zurück


 
powered by telltarget