Aufsplittung einer Text-Zeichenfolge nach Grossbuchstaben in getrennte Zellen

VBA, Excel2007
Hallo Experten!

Vor zwei Jahren hat mir eine Expertin aufgrund meiner Anfrage ein wahres Klammernmonster zur Aufsplittung einer Zeichenfolge von Zu-und Vorname in der Art „MeierMax“ auf „Meier“ und „Max“ in zwei Zellen zukommen lassen, welches im Test auch tatsächlich funktionierte:

A1= MeierMax, B2=LINKS(A1;MAX(ZEILE(INDIREKT(„2:“&LÄNGE(A1)))*IDENTISCH(TEIL(A1;ZEILE(INDIREKT(„2:“&LÄNGE(A1)));1);GROSS(TEIL(A1;ZEILE(INDIREKT(„2:“&LÄNGE(A1)));1))))-1) und C2=WECHSELN(A1;B1;""). Das Ganze als Matrixformel mit Strg+Shift+Enter abschliessen.

Nun wollte ich dieses Ungeheuer wieder anwenden und - grosse Überraschung - es funktioniert nicht mehr und dies, obwohl ich vor Eingabe meine Mappe als xlsm - Mappe abgespeichert habe. Es wird in B2 #Wert! gemeldet und in C2 „MeierMax“ angezeigt.
Meine Frage: Habe ich irgendeinen Fehler bei der Übertragung gemacht, oder können durch Updates Funktionen so abgeändert worden sein, dass sie nicht mehr das gewünschte Resultat liefern.
Schliesslich möchte ich noch anmerken, dass mein Herz nicht an diesen Funktionen hängt und ich auch jede andere Lösung mit der gleichen Wirkung dankbar annehme.

Besten Dank vorweg für eure Tipps und
freundliche Grüsse
wiedhalm

Hallo,

wenn ich es so mache wie von dir beschrieben, erhalte ich das:

C2:
Die Formel bezieht sich auf B1, die andere Formel ist aber in B2.

B2:
Wie du siehst, funktioniert die Formel in B2.
Wenn du die Zelle auswählst (einfacher Klick auf die Zelle), sollten an Anfang und Ende der Formel wie im Bild die geschweiften Klammern angezeigt werden, ansonsten hast du etwas mit der Matrixformel falsch gemacht.
Alternativ kannst du es mal mit dieser Formel probieren (keine Matrixformel):

=LINKS(A1;VERWEIS(50;FINDEN(ZEICHEN(ZEILE(65:90));WECHSELN(WECHSELN(WECHSELN(A1;"Ä";"A");"Ö";"A");"Ü";"A");2))-1)

Du brauchst übrigens nicht als xlsm speichern, außer du benutzt Makros.

Gruß
Tobias

Hallo Tobias!

Zunächst einmal herzlichen Dank für deine prompte Antwort. Ich muss ganz ehrlich gestehen, deine Formel ist mir schon deshalb sympathischer , weil für mich leichter zu bedienen. Du weisst schon: F2, Strg+Shift+Enter usw.
Im übrigen bin ich ganz stolz auf mich, dass ich den zweiten Teil der Lösung ganz alleine zusammenbrachte.
Endstadium der Lösung:
in A1: Meier Max
in B2: =LINKS(A1;VERWEIS(50;FINDEN(ZEICHEN(ZEILE(65:90));WECHSELN (WECHSELN(WECHSELN(A1;„Ä“;„A“);„Ö“;„A“);„Ü“;„A“);2))-1)
in C2: =WECHSELN(A1;B2;"")
damit erhalte ich in B2 den „Meier“ und in C2 den „Max“ und damit ist auch mein Problem gelöst, wofür ich dir nochmals herlichst danken möchte.
Freundliche Grüsse
wiedhalm

Hallo Tobias!

Leider ist mir bei der Darstellung der Problemlösung ein ganz kleiner Fehler passiert:

In A1 steht natürlich „MeierMax“ und nicht „Meier Max“

Aber an solchen Kleinigkeiten scheitern leider oft die Hobby-Programmierer!

Liebe Grüsse
wiedhalm

Hallo Tobias
Tolle Formel!

Eine Kleinigkeit: Wenn ich Deine Formel in B1 eingebe und dann nach unten kopiere, ändern sich die Werte
ZEILE(65:90) zu ZEILE(66:91), ZEILE(67:92) usw.
Das führt bald einmal zu einem Chaos.
Ich würde in der Formel folgende Aenderung vornehmen:
ZEILE(A$65:A$90)

Grüsse Niclaus

1 Like

Hallo,

stimmt, das hatte ich übersehen. Danke für den Hinweis.

Gruß
Tobias