Seite 1 von 1

Letztes Wort

Verfasst: So 4. Nov 2012, 12:35
von wbiebel
Hallo!
Ich bin neu hier, habe nach einer Antwort auf meine Frage gesucht & nicht gefunden; vielleicht ist sie ja schon mehrfach gestellt & beantwortet worden (könnte ich mir denken):
ich suche eine Möglichkeit, das letzte Wort aus einem String / das letzte Vorkommen eines Teilstrings zu finden
Natürlich kann ich eine rekursive Funktion schreiben, die von Beginn an den jeweiligen Delimiter sucht und sich die letzte Position merkt und wenn keiner mehr gefunden wird, dann die gemerkte Position nimmt und bis zum Ende des Strings extrahiert.
Aber so -- langsam -- haben wir schon vor 20 Jahren programmiert. Gibt´s in LO keine elegantere Möglichkeit? Weil ich würde dann gleich allgemeine Funktionen schreiben à la ITEM(string, delimiter, nummer) und ITEM_ANZ(string, delimiter, modus). Oder hat die schon jemand gemacht (müsste eigentlich sein, sind ja essenzielle Sachen).
Danke für Antwort.
WB

Re: Letztes Wort

Verfasst: So 4. Nov 2012, 15:36
von wbiebel
OK, schreibe mir die Funktionen mit split() selbst

Re: Letztes Wort

Verfasst: So 4. Nov 2012, 16:36
von karolus
Hallo
Aber so -- langsam -- haben wir schon vor 20 Jahren programmiert. Gibt´s in LO keine elegantere Möglichkeit? Weil ich würde dann gleich allgemeine Funktionen schreiben à la ITEM(string, delimiter, nummer) und ITEM_ANZ(string, delimiter, modus). Oder hat die schon jemand gemacht (müsste eigentlich sein, sind ja essenzielle Sachen).
In Basic hat sich seit mind. 20 Jahren nichts wesentliches in der Entwicklung getan - wenn du "schneller" programmieren willst, beschäftige dich mit Python oder einer der anderen von Lo/AOo unterstützen (Script-)Sprachen.

Karolus

Re: Letztes Wort

Verfasst: Mo 5. Nov 2012, 20:13
von Lupo
A1: Ich gehe zum Kühlschrank und finde dort nichts

A3: =LINKS(A1;SUCHEN("#";WECHSELN(A1;" ";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))))-1)
A3: Ich gehe zum Kühlschrank und finde dort

Wirkungsweise der Formel in A3 (man beschreibt Formeln von innen nach außen):
1. Von der Länge des Strings wird die Länge des delimiterbereinigten Strings abgezogen. Diese Differenz ergibt das gesuchte letzte Auftreten des Delimiters
2. Dort wird er gewechselt in einen Markierer (hier #)
3. Mittels LINKS und SUCHEN wird alles bis zum Markierer ausgegeben

- Als Delimiter " " sowie als Markierer "#" (als letzter Delimiter) kannst Du natürlich andere Zeichen wählen
- Ein häufig unbeabsichtigt eingegebenes Zeichen ist das Leerzeichen am Anfang/Ende oder zwei Leerzeichen mitten drin. Korrektur: GLÄTTEN(A1)
- WECHSELN ist die einzige Excelformel mit dem Parameter "n-tes Auftreten".
- Ohne einen Delimiter gibt es Err: 502 ... wenn nötig, fehlerbehandelst Du also noch.