Seite 1 von 1

[gelöst] INDIREKT(),aber für Funktionen (nicht für Adressen)

Verfasst: Mi, 17.02.2010 18:22
von T aus B
Hallo!

(mein erstes Posting hier :D )

Ich benutze OOo 3.1 und habe in einer Zelle einen Textstring dieser Art: "4;25;45;9;5;12". Ich suche einen Weg diesen Textstring wie eine "Argumentenkette" innerhalb einer Funktion zu interpretieren. Konkret:
WAHL(Index;"Argumentenkette"), d.h. ich möchte mit einem Index gezielt die z.B. 3. oder 5. Zahl auslesen.

Meine (vermutlich unzulänglichen) Erkenntnisse dazu sind:
* die INDIREKT() kann nur Adressangaben aber keine Funktionen (oder auch Bereiche) deuten
* via FINDE(), TEIL(), LÄNGE() etc. wäre das Problem vermutlich lösbar, der Weg scheint mir aber kompliziert und "unelegant" zu sein (die Zahlen bestehen nicht immer aus zwei Ziffern)
* Habe lange im OOo Wiki nach Lösungsansätzen gesucht, bin aber leider nicht fündig geworden

Restriktion:
* ein allg. Datenimport, der den Text gleich in verschiedene Zellen zerlegt kommt nicht infrage

Gibt es einen einfachen Weg dieses Problem per Formel zu lösen?
Kann man einen String in einen Vektor bzw. eine Matrix umwandeln?

Gruß
TausB

Re: INDIREKT(), aber für Funktionen (nicht für Adressen)

Verfasst: Mi, 17.02.2010 19:04
von lorbass
Willkommen im Forum :)
T aus B hat geschrieben:Gibt es einen einfachen Weg dieses Problem per Formel zu lösen?
Im Prinzip bist du mit den Text-Funktionen SUCHEN(), FINDEN() & Co. auf der richtigen Spur. Wenn dir das aber zu unelegant ist, bleibt dir der Weg, selbst eine Funktion WAHL(Index;"Argumentenkette") zu schreiben.

Gruß
lorbass

Re: INDIREKT(), aber für Funktionen (nicht für Adressen)

Verfasst: Mi, 17.02.2010 19:21
von T aus B
Hallo lorbass,
Wenn dir das aber zu unelegant ist, bleibt dir der Weg, selbst eine Funktion WAHL(Index;"Argumentenkette") zu schreiben.
Zugegeben: elegant wäre das :D !
... aber ich meinte auch einfach 8)

Vielleicht noch andere Lösungsansätze?

Re: INDIREKT(), aber für Funktionen (nicht für Adressen)

Verfasst: Mi, 17.02.2010 20:12
von Karolus
Hallo
Eine eigene Funktion dafür ist schnell geschrieben:

Code: Alles auswählen

function auswahl( index , sstring)
astring() = split( sstring, ";")
auswahl = astring( index -1 )
end function
Aufrufsyntax in Calc
=AUSWAHL( index oder zelladresse mit dem index ; zelladresse des Strings )
falls kein Text sondern ein Wert rauskommen soll:
=WERT(AUSWAHL( index oder zelladresse mit dem index ; zelladresse des Strings ))

Gruß Karo

Re: INDIREKT(), aber für Funktionen (nicht für Adressen)

Verfasst: Do, 18.02.2010 07:51
von T aus B
Hallo Karo,
Karolus hat geschrieben: Eine eigene Funktion dafür ist schnell geschrieben:
Danke, die Funktion sieht wirklich übersichtlich aus. :D

Benutzerdefinierte Funktionen haben i.a. für mich einen kleinen Nachteil: Man muß immer darauf achten, daß sie nicht verloren gehen (Neuinstallation) oder weitergegeben werden (andere Nutzer). Ich bevorzuge d.h. i.a. eine Lösung mit direkt verfügbaren Boardmitteln.

Bitte nicht als Kritik verstehen, Deine Antwort erfüllt exakt ihren Zweck.

Was mir gerade einfällt: wenn ich die benutzerdefinierten Funktionen in das Dokument speichere, sollten doch meine Sorgen (solange das Dokument existiert) nicht zum Tragen kommen - korrekt?

Grüße
TausB

Re: INDIREKT(), aber für Funktionen (nicht für Adressen)

Verfasst: Do, 18.02.2010 11:09
von Karolus
Hallo
Was mir gerade einfällt: wenn ich die benutzerdefinierten Funktionen in das Dokument speichere, sollten doch meine Sorgen (solange das Dokument existiert) nicht zum Tragen kommen - korrekt?
Ja, korrekt - ist aber nur sinnvoll solange die Funktion nur in diesem Dokument benötigt wird.

Gruß Karo