Namen zerlegen mit Excel

Vor ein paar Tagen hatte ich die Aufgabe, Namen der Form „Mustermann Max und Manuela“ in die einzelnen Bestandteile zu zerlegen, um die Namen der einzelnen Ehepartner getrennt ausgeben zu können. Es wäre zwar einfacher gewesen, ein entsprechendes VBA Makro zu schreiben, das die vier Werte zurückliefert, die Lösung wollte ich aber nur mit Formeln bauen. Die folgenden vier Formeln wurden für die Lösung genutzt:

  • Länge("Zelle"): Gibt die Länge des Inhalts einer Zelle aus, als z.B. 5, wenn eine Zelle „abcde“ enthält.
  • Links("Zelle"; "Zeichen"): Gibt vom Zellinhalt in „Zelle“ die linken „Zeichenzahl“ Zeichen zurück.
  • Rechts("Zelle"; "Zeichen"): Gibt vom Zellinhalt in die rechten „Zeichenzahl“ Zeichen zurück.
  • Finden("Suchtext","Zelle",[Startposition]): sucht den Inhalt von „Suchtext“ in Zelle „Zelle“. Optional kann über [Startposition] angegeben werden, ab welchem Zeichen die Funktion mit dem Suchen beginnen soll.

Mit der Kombination dieser vier Formeln können wir jetzt die Zeichenkette bearbeiten:

Mustermann

Das „Mustermann“ zu isolieren ist noch relativ einfach: Zum Nachnamen gehört alles bis zum ersten Leerzeichen. Das Leerzeichen finden wir dynamisch, indem wir mittels Finden() danach suchen. Als Formel erhalten wir (wenn der komplette Name in Zelle B3 steht):

=LINKS(B3;FINDEN(" ";B3))

Max

Um den „Max“ aus der Zeichenkette zu extrahieren, gibt es verschiedene Möglichkeiten. Neben der gleich vorgestellten könnten wir auch mittels wechseln() das „Mustermann“ aus dem String löschen und dann die oben genutzte Formel nutzen. Ich mache es jedoch ein wenig anders, indem ich nach dem zweiten Leerzeichen suche und mir mit Links() den Text links davon zurückgeben lasse:

=LINKS(B3;FINDEN(" ";B3;1+FINDEN(" ";B3)))

Ich nutze dabei die Tatsache, dass ich Finden() mitgeben kann, an welcher Stelle es denn mit der Suche beginnen soll. Und diese Stelle ist genau die Position des ersten Leerzeichens plus 1.

Jetzt habe ich „Mustermann Max“ in einer Zelle. Nun kann ich a) die Länge dieser Zeichenkette bestimmen, b) das Leerzeichen suchen und c) aus der Differenz zwischen Länge und Fundort die Anzahl der Zeichen ermitteln, die ich von rechts entnehmen muss:

=RECHTS(D3;LÄNGE(D3)-FINDEN(" ";D3))

Manuela

Der einfachste Weg, das „Manuela“ zu extrahieren, wäre über eine VBA Funktion, die die Zeichenkette umdreht, dort das dann erste Leerzeichen sucht und den entsprechenden Text zurückgibt. Geht aber auch kompliziert, in diesem Fall auch ohne Hilfsspalte.

Wie eben schon nutze ich Rechts() um den String zu extrahieren. Ich nutze aber eine dreifach verschachtelte Finden() Funktion, um das dritte Leerzeichen zu ermitteln. Alles, was rechts vom dritten Leerzeichen steht, ist unser gesuchter Name.

=RECHTS(B3;LÄNGE(B3)-FINDEN(" ";B3;1+FINDEN(" ";B3;1+FINDEN(" ";B3))))

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website