Seite 1 von 3

Zellen mit Text aufteilen... mal wieder...

Verfasst: Do 17. Mär 2016, 19:14
von Wolfgang
Hallo!

In einer Tabelle stehen in Spalte C Namen und Anrede:

Herr Max Muster
Frau Erika Muster
Herr Anton Caesar Berta
Doktor B. Einbruch
Direktorin Muster-Vorbild
Herr Mustermann


Für den späteren Seriendruck benötige ich eine Aufteilung in zwei Spalten: Anrede und Nachname.

Die Schwierigkeit dabei: die Anzahl der Wörter und damit die Anzahl der Leerzeichen variiert, je nachdem, wie ausführlich der Name einst erfasst wurde. Eine einfache Aufteilung in links und rechts vom Leerzeichen funktioniert also nicht.

Probiert habe ich

Code: Alles auswählen

=WENN(C2="";"";TEIL(C2;SUCHEN(" ";C2;SUCHEN(" ";C2)+1)+1;LÄNGE(C2)))
Das funktioniert so lange, wie in der Spalte C 3 Wörter stehen: "Anrede Vorname Nachname". Sobald nur 2 Wörter, also "Anrede Nachname" in der Zelle stehen, gibt es den Fehler "#WERT!".

So ganz trivial ist das dann doch nicht.

Wie muss ich es richtig machen?

Re: Zellen mit Text aufteilen... mal wieder...

Verfasst: Do 17. Mär 2016, 20:18
von HeritzP
Hallo,

Ich würde mit Text in Spalten die Wörter auftrennen, und mit einer Formel wieder zusammenfügen.


Gruß HeritzP

Re: Zellen mit Text aufteilen... mal wieder...

Verfasst: Do 17. Mär 2016, 23:41
von Wolfgang
Ich beantworte meine Frage mal selber:

Es läuft darauf hinaus, das erste und letzte Wort eines Textes in einer Zelle zu extrahieren. Nach vielem Suchen und Probieren habe ich jetzt eine Lösung gefunden:

Das erste Wort eines Textes, also die Anrede, ist einfach:

Code: Alles auswählen

=GLÄTTEN(LINKS(A2;SUCHEN(" ";A2;-1)))
Das Finden des letzten Wortes, also des Nachnamens, ist schon etwas kniffeliger, wie man an der folgenden Formal sieht:

Code: Alles auswählen

=RECHTS(A2;LÄNGE(A2)-FINDEN("*";WECHSELN(A2;" ";"*";LÄNGE(A2)-LÄNGE(WECHSELN(A2;" ";"")))))
Sie stammt nicht von mir, funktioniert aber unabhängig von der Anzahl der Vornamen oder Titel. So recht durchschaut habe ich sie jedoch noch nicht. Was ich verstanden habe, ist, daß sie zuerst die Anzahl der Leerzeichen bestimmt, indem sie von der Gesamtlänge des Textes die Länge des Textes ohne Leerzeichen abzieht. Das macht der letzte Teil:

Code: Alles auswählen

LÄNGE(A2)-LÄNGE(WECHSELN(A2;" ";""))
Aber ab da verstehe ich es nicht mehr: dann tauscht die Formel anscheinend Leerzeichen gegen Sternchen aus uns sucht danach, zieht dieses Ergebnis von der Länge des Textes ab und nimmt den rechten Teil. :?: :?:

Wer kann mir das erklären?

Re: Zellen mit Text aufteilen... mal wieder...

Verfasst: Fr 18. Mär 2016, 09:46
von paljass
Hi,
Was ich verstanden habe, ist, daß sie zuerst die Anzahl der Leerzeichen bestimmt
das hast du schon mal falsch verstanden.

Der von dir genannte Formelteil ist der 4. Parameter der Funktion Wechseln(). Der erste Parameter der Funktion (A2) bezeichnet den Text, in dem etwas ausgetauscht werden soll. Der 2. Parameter (" ") bezeichnet den Text, der ausgetauscht werden soll. Der 3. Parameter ("*") bezeichnet den Text, der eingesetzt werden soll. Der 4. Parameter ( LÄNGE(A2)-LÄNGE(WECHSELN(A2;" ";"") ) sagt aus, das wievielte Auftreten des 2. Parameters ausgetauscht werden soll.
So wird aus "Herr Max Muster" durch die Funktion "Herr Max*Muster" und aus "Herr Anton Caesar Berta" wird "Herr Anton Caesar*Berta".

Die Funktion Finden() sucht nun nach dem Stern und gibt die Position zurück, damit Rechts() dann die richtige Anzahl von Zeichen auswirft.

Alles in allen eine geniale Formel, auf die ich vermutlich nie gekommen wäre.

Gruß
paljass

Re: Zellen mit Text aufteilen... mal wieder...

Verfasst: Fr 18. Mär 2016, 09:59
von iBlack
Hallo,

die Formel ist echt sauber, vor allem (sobald man sie verstanden hat, bzw. erklärt bekommen hat, Vielen Dank paljass an dieser Stelle) echt einleuchtend und komplex.

Die Formel ist echt Gold wert! Mit dieser Methode kann man echt noch viele weitere Dinge erledigen!

Wenn man solche Formeln versteht, fällt das arbeiten mit LOC oder Excel echt leichter.

Vielen Dank für das Teilen dieser Formel und für die tolle Erklärung :)

Grüße,

iBlack

Re: Zellen mit Text aufteilen... mal wieder...

Verfasst: Fr 18. Mär 2016, 10:23
von Wolfgang
paljass hat geschrieben:
Was ich verstanden habe, ist, daß sie zuerst die Anzahl der Leerzeichen bestimmt
das hast du schon mal falsch verstanden.
Wundert mich nicht. ;-)

Danke für Deine Erklärung!
Der von dir genannte Formelteil ist der 4. Parameter der Funktion Wechseln().
Ich glaube aber, daß ich das mit der Anzahl der Leerzeichen doch ein klein wenig richtig verstanden habe: denn die Anzahl n der Leerzeichen, welche dieser 4. Parameter darstellt, wird doch benötigt, um in der weiteren Auflösung dieser Formel das n-te Leerzeichen zum Austauschen gegen ein Sternchen zu bestimmen. Ich hatte zwar die Funktion "Wechsel" noch nicht ganz durchschaut, aber dank Deiner Erklärung ist jetzt bei mir der Groschen gefallen.

Da wir aber gerade bei dem Thema sind: was ist der Unterschied zwischen den Funktionen "Wechseln" und "Tauschen"?
Alles in allen eine geniale Formel, auf die ich vermutlich nie gekommen wäre.
Nicht nur Du nicht. Ja, die Formel ist echt gut. Ich habe sie auch nur durch Zufall gefunden, mir aber dummerweise die Adresse nicht gemerkt. Wenn also der ursprüngliche Erfinder hier liest: die Lorbeeren gehören ganz ihm oder ihr!

Re: Zellen mit Text aufteilen... mal wieder...

Verfasst: Fr 18. Mär 2016, 11:09
von iBlack
Hei :)
Da wir aber gerade bei dem Thema sind: was ist der Unterschied zwischen den Funktionen "Wechseln" und "Tauschen"?
Wo hast du denn die Funktion Tauschen gefunden?

In meinem LO gibts nur =WECHSELN :p
Ich glaube aber, daß ich das mit der Anzahl der Leerzeichen doch ein klein wenig richtig verstanden habe: denn die Anzahl n der Leerzeichen, welche dieser 4. Parameter darstellt, wird doch benötigt, um in der weiteren Auflösung dieser Formel das n-te Leerzeichen zum Austauschen gegen ein Sternchen zu bestimmen. Ich hatte zwar die Funktion "Wechsel" noch nicht ganz durchschaut, aber dank Deiner Erklärung ist jetzt bei mir der Groschen gefallen.
Du hattest in Teilen Recht damit, die Formel zählt die Leerzeichen, gibt diese aber nicht aus, da er die Anzahl Leerzeichen nur dafür benötigt, das letzte Leerzeichen zu finden um das letzte Wort zu bestimmten!

Um es selbst nochmal besser zu verstehen versuche ich mich auch nochmal an einer kleinen Erklärung:
Die Formel:

Code: Alles auswählen

=RECHTS(A2;LÄNGE(A2)-FINDEN("*";WECHSELN(A2;" ";"*";LÄNGE(A2)-LÄNGE(WECHSELN(A2;" ";"")))))
Als Beispieltext nehmen wir mal "Das ist ein Test Text"

Wir wollen also das Wort "Text" am Ende da stehen haben ;)

Also los,

Code: Alles auswählen

=RECHTS()
Diese Formel gibt je nach belieben von Rechts nach links alles ab dem n-ten Zeichen aus.
Sprich bei dem Wort "Hallo" wäre

Code: Alles auswählen

=RECHTS("Hallo";3)
die Ausgabe "ollo"

So, die Formel

Code: Alles auswählen

=LÄNGE()
Gibt die Anzahl Zeichen (auch Leerzeichen werden eingerechnet) eines Textes oder eben die Anzahl zeichne in einer Zelle zurück.
Sprich

Code: Alles auswählen

=LÄNGE("Hallo")
Würde die Zahl "5" zurückgeben.

Die Funktion

Code: Alles auswählen

 =FINDEN()
sucht ein Teilwort oder ein Zeichen in einem Text (Berücksichtigt Groß- und Kleinschreibung)
Die benötigten Parameter bei dieser Funktion sind:
- der Suchtext
- in Welchem Text wird gesucht
- Welche Postion

In dieser Formel

Code: Alles auswählen

FINDEN("*";WECHSELN(A2;" ";"*";LÄNGE(A2)-LÄNGE(WECHSELN(A2;" ";""))))
Wird nach dem Zeichen "*" gesucht, welches im Text der Zelle A2 gesucht wird, was während der Suche gleich von Leerzeichen auf "*" gewechselt wird.
Sprich, es wird nach "*" gesucht, und im gleichen Zug werden die Leerzeichen vorerst durch "*" ersetzt. Die Position der zu Wechselnden Leerzeichen wird dann durch den hinteren Teil bestimmt.

Code: Alles auswählen

LÄNGE(A2)-LÄNGE(WECHSELN(A2;" ";"")))))
Es wird die komplette Länge des Textes in A2 genommen, der Text wird von einem Text mit Leerzeichen in den gleichen Text ohne Leerzeichen umgewandelt.

Dann wird die Länge von dem Text ohne Leerzeichen von der Textlänge mit Leerzeichen abgezogen.

Bei unserem Text "Das ist ein Test Text" wären es mit Leerzeichen also 21 Zeichen,
Ohne Leerzeichen sprich "DasisteinTestText" wären es dann also 17 Zeichen.
21 Zeichen - 17 Zeichen sind dann also 4 Zeichen.
Nun soll an der 4. Stelle wo ein Leerzeichen ist also der Stern eingefügt werden Sprich:

"Das[Erstes Leerzeichen, passiert nichts]ist[2. Leerzeichen, passiert nichts]ein[3. Leerzeichen, passiert nichts]Test[4. Leerzeichen, wird in "*" umgewandelt"]Text"

Also von "Das ist ein Test Text" zu "Das ist ein Test*Text"

Ich hoffe das ist nicht zu verwirrend :p

Also haben wir dann schlussendlich:
Text: "Das ist ein Test Text"

Code: Alles auswählen

=RECHTS(A2;LÄNGE(A2[21 Zeichen])-FINDEN("*";WECHSELN(A2;" ";"*";LÄNGE(A2)-LÄNGE(WECHSELN(A2;" ";""[17 Zeichen])))))
Also, 21 Zeichen - 17 Zeichen = 5 Zeichen
Heißt für die Formel vereinfacht im Endeffekt nur:

Code: Alles auswählen

=RECHTS("Das ist ein Test Text";5)
="Text"

Puuh, endlich fertig :D

Grüße,

iBlack

Re: Zellen mit Text aufteilen... mal wieder...

Verfasst: Fr 18. Mär 2016, 11:22
von Wolfgang
iBlack hat geschrieben:Hei :)
Da wir aber gerade bei dem Thema sind: was ist der Unterschied zwischen den Funktionen "Wechseln" und "Tauschen"?
Wo hast du denn die Funktion Tauschen gefunden?

In meinem LO gibts nur =WECHSELN :p
Tschuldigung: ich meinte "Ersetzen". LO5 bietet sowohl "Ersetzen" als auch "Wechseln" als Funktionen an.

Re: Zellen mit Text aufteilen... mal wieder...

Verfasst: Fr 18. Mär 2016, 11:57
von iBlack
Hei :p,
Tschuldigung: ich meinte "Ersetzen". LO5 bietet sowohl "Ersetzen" als auch "Wechseln" als Funktionen an.
Die Funktion =WECHSELN() Ersetzt mehrfach Teilworte in einem Text.

Die Funktion =ERSETZEN() Ersetzt einen Teil eines Textes durch einen anderen Text.


Reicht das als Erklärung? :p

Grüße,

iBlack

Re: Zellen mit Text aufteilen... mal wieder...

Verfasst: Fr 18. Mär 2016, 12:28
von Wolfgang
iBlack hat geschrieben:Hei :p,

Reicht das als Erklärung? :p
Nein, das reicht leider nicht. Es sei denn, Du willst auf das Wort "mehrfach" hinaus, welches in der Erklärung zu "Wechseln" steht, aber nicht bei "Ersetzen".

Für mich machen beide Funktionen zunächst mal grundlegend das gleiche: sie ersetzen Teile eines Textes durch anderen Text. Abgesehen von dem Wort "mehrfach" sehe ich in der Beschreibung keinen großen Unterschied in der Bedeutung:
"ersetzt [mehrfach] Teilworte in einem Text"
hört sich für mich genau so an wie
"ersetzt einen Teil eines Textes".
Was ist denn der Unterschied zwischen einem "Teilwort eines Textes" und einem "Teil eines Textes"?