von Stephan » So, 25.10.2015 20:54
JK hat geschrieben:Entschuldigung, da habe ich mich ungenau ausgedrückt.
Ich würde die WENNFEHLER-Funktion als benutzerdefinierte Funkion schreiben, siehe
https://wiki.openoffice.org/wiki/Custom_functions. (Die Erklärung bei LO ist etwas ausführlicher wie man die Funktion einbaut:
https://help.libreoffice.org/Calc/User- ... nctions/de .)
Nun müsste ich in dem Code ja aber abfragen, ob die Funktion WENNFEHLER schon definiert ist (da builtin wie in LO) oder nicht. Oder etwa nicht?
Es wäre meines Erachtens doch praktischer, die WENNFEHLER-Formeln zu belassen (da sie ja auch deutlich lesbarer sind) und die WENNFEHLER-Funktion eben einfach mit dem Dokument mitzuliefern.
Da LibreOffice die Funktion ja kennt, würde ich die Funktion nur definieren wollen, wenn das Dokument in AOo geöffnet ist - und eben die Funktion nicht definiert ist.
Ich habe mich mit diesem Thema schon lange nicht mehr beschäftigt und habe das deshalb jetzt aktuell mit LO geprüft, Du kannst das ohne Prüfung so verwenden, ABER:
WENNFEHLER() besitzt die Besonderheit das es einen Fehlerwert 'enthält' wenn der erste Parameter einen Fehlerwert liefert und darauf reagiert AOO (geprüft mit 4.1.1 und OOo 3.3.0) mit der 'kompromisslosen' Rückgabe des Fehlerwerts, so das ich keine Chance sehe hierfür eine benutzerdefinierte Funktion zu verwenden.
Allgemein funktioniert das Ganze aber so wie Du es Dir vorstellst, was ich gerade testweise mit DATEDIF() verifiziert habe. Besonderheit, aber die sollte Dir ja bekannt sein ist das AOO sehr wohl die internen Funktionsnamen nutzt Du also die entsprechenden benutzerdefinierten Funktionen so nennen musst, also bei DATEDIF() tatsächlich DATEDIF() auch wenn Du mit deutschen AOO arbeitest und die Funktion DATUMDIF() wäre, was ja das deutsche LO auch anzeigt.
Insgesamt:
ja das Verfahren geht, nur leider bei der ganz speziellen Funktion nicht, zumindest weiß ich nicht wie. Man könnte vielleicht auch dagegen noch etwas tun, aber Alles scheint mir diesbezüglich komplizierter als stattdessen gleich einen benannten Bereich (z.B. Namens "WENN_FEHLER") zu definieren und dort eine Funktion zu hinterlegen die für LO und OO passt.
Ach so, vielleicht noch eine Anregung:
man kann für OO/LO 'echte' AddIn-Tabellenfunktionen mittels z.B. Java schreiben (wahrscheinlich geht auch Python, aber Java geht garantiert) u.U. könnte das das Problem mit WENNFEHLER() lösen, allerdings nur wenn das Addin lokal installiert ist (was man notfals zwar wohl auch bei Öffnen der Datei automatisch erledigen lassen könnte, aber ob derartige Tricks sich lohnen, nur um ISTFEHLER() und einen etwas anderen Formelaufbau zu vermeiden?
Gruß
Stephan
[quote="JK"]Entschuldigung, da habe ich mich ungenau ausgedrückt.
Ich würde die WENNFEHLER-Funktion als benutzerdefinierte Funkion schreiben, siehe https://wiki.openoffice.org/wiki/Custom_functions. (Die Erklärung bei LO ist etwas ausführlicher wie man die Funktion einbaut: https://help.libreoffice.org/Calc/User-Defined_Functions/de .)
Nun müsste ich in dem Code ja aber abfragen, ob die Funktion WENNFEHLER schon definiert ist (da builtin wie in LO) oder nicht. Oder etwa nicht?
Es wäre meines Erachtens doch praktischer, die WENNFEHLER-Formeln zu belassen (da sie ja auch deutlich lesbarer sind) und die WENNFEHLER-Funktion eben einfach mit dem Dokument mitzuliefern.
Da LibreOffice die Funktion ja kennt, würde ich die Funktion nur definieren wollen, wenn das Dokument in AOo geöffnet ist - und eben die Funktion nicht definiert ist.[/quote]
Ich habe mich mit diesem Thema schon lange nicht mehr beschäftigt und habe das deshalb jetzt aktuell mit LO geprüft, Du kannst das ohne Prüfung so verwenden, ABER:
WENNFEHLER() besitzt die Besonderheit das es einen Fehlerwert 'enthält' wenn der erste Parameter einen Fehlerwert liefert und darauf reagiert AOO (geprüft mit 4.1.1 und OOo 3.3.0) mit der 'kompromisslosen' Rückgabe des Fehlerwerts, so das ich keine Chance sehe hierfür eine benutzerdefinierte Funktion zu verwenden.
Allgemein funktioniert das Ganze aber so wie Du es Dir vorstellst, was ich gerade testweise mit DATEDIF() verifiziert habe. Besonderheit, aber die sollte Dir ja bekannt sein ist das AOO sehr wohl die internen Funktionsnamen nutzt Du also die entsprechenden benutzerdefinierten Funktionen so nennen musst, also bei DATEDIF() tatsächlich DATEDIF() auch wenn Du mit deutschen AOO arbeitest und die Funktion DATUMDIF() wäre, was ja das deutsche LO auch anzeigt.
Insgesamt:
ja das Verfahren geht, nur leider bei der ganz speziellen Funktion nicht, zumindest weiß ich nicht wie. Man könnte vielleicht auch dagegen noch etwas tun, aber Alles scheint mir diesbezüglich komplizierter als stattdessen gleich einen benannten Bereich (z.B. Namens "WENN_FEHLER") zu definieren und dort eine Funktion zu hinterlegen die für LO und OO passt.
Ach so, vielleicht noch eine Anregung:
man kann für OO/LO 'echte' AddIn-Tabellenfunktionen mittels z.B. Java schreiben (wahrscheinlich geht auch Python, aber Java geht garantiert) u.U. könnte das das Problem mit WENNFEHLER() lösen, allerdings nur wenn das Addin lokal installiert ist (was man notfals zwar wohl auch bei Öffnen der Datei automatisch erledigen lassen könnte, aber ob derartige Tricks sich lohnen, nur um ISTFEHLER() und einen etwas anderen Formelaufbau zu vermeiden?
Gruß
Stephan