WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Gert Seler
*******
Beiträge: 1763
Registriert: Di, 03.10.2006 18:05

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von Gert Seler »

Hallo Philly,
Deine Formel:
WENNFEHLER(INDEX(Datentabelle!$B$1:$B$1 ... !B1)));"")
Ändere die " ! " hinter "Datentabelle!$B$1:$B$19865 ..... in einen Punkt " . " dann sollte es passen.
Gilt generell bei allen derartigen "Bezügen" von "MS_Excel" .

mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von TrueColor »

Beim Lesen kann dir leider keiner helfen, das musst du schon selbst erledigen.

Schau dir nochmal Gerts Antwort auf das OP an.
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
Karolus
********
Beiträge: 7442
Registriert: Mo, 02.01.2006 19:48

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von Karolus »

Generalisierte Umformung ( mit Spezialisierung auf #NV-fehler aus SVERWEIS oder VERGLEICH

WENNFEHLER( formel ; alternative)
wird zu
WENN( ISTNV( formel) ; alternative;formel )

bei dir: alternative == ""

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von TrueColor »

Ich würde sagen, das ist so gut formuliert, dass man das in die FAQ nehmen könnte. Was meinst du, Karolus?
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
JK
*
Beiträge: 19
Registriert: Mi, 28.02.2007 23:47

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von JK »

Ich weiß nicht genau seit wann, aber auf jeden Fall In LibreOffice 5.0.2.2 liefern ungültige Bezüge in SVERWEIS nicht mehr immer #NV, sondern unter Umständen #REF! als Fehlerwert.
Beispiel:
Zelle A1 enthält TabellenblattName, Zelle B1 enthält XYZ.
Es existiert eine leere Tabelle mit Namen TabellenblattName, nicht jedoch XYZ.
In Zelle A2 folgende Formel:

Code: Alles auswählen

=SVERWEIS("Summe";INDIREKT(VERKETTEN(A$1;".$Q$1:$Z$500"));2;)
in B2 entsprechend

Code: Alles auswählen

=SVERWEIS("Summe";INDIREKT(VERKETTEN(B$1;".$Q$1:$Z$500"));2;)
Die Formel in A2 liefert #NV zurück, in B2 jedoch #REF!.
paljass
******
Beiträge: 792
Registriert: Do, 25.10.2012 07:25

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von paljass »

Hi,
unter AOo 4.1.1 wird in beiden Fällen #NV ausgegeben.
Allerdings scheint LO den "richtigen" Fehler zurückzugeben, denn in der Hilfe heißt es :
524
#REF
Ungültiger Bezug (in der Zelle steht nicht Err:524 sondern #REF!)
Compiler: Ein Beschreibungsname für eine Spalte oder Zeile konnte nicht aufgelöst werden. Interpreter: Die Spalte, Zeile oder Tabelle mit der referenzierten Zelle fehlt in einer Formel.
Wenn also der Tabellenname, den du in B1 stehen hast, nicht existiert, dann liegt halt ein ungültiger Bezug vor, der den Fehler #REF auslöst.

Wenn du dieses Fehler auch abfangen willst, darfst du halt nicht mit ISTNV(Formel) arbeiten, sondern mit (ISTFEHLER(Formel).

Gruß
paljass
EDV ist wie U-Boot fahren - machst du ein Fenster auf, fangen die Probleme an.
JK
*
Beiträge: 19
Registriert: Mi, 28.02.2007 23:47

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von JK »

Danke für den Tipp!

Versteht AOo denn WENNFEHLER mittlerweile?
Ansonsten wäre es praktisch, WENNFEHLER als eigene Funktion mitzuliefern. Doch wie frage ich ab, ob eine Funktion bereits definiert ist oder nicht?
JK
*
Beiträge: 19
Registriert: Mi, 28.02.2007 23:47

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von 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- ... 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.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von Stephan »

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
JK
*
Beiträge: 19
Registriert: Mi, 28.02.2007 23:47

Re: WENNFEHLER Formel umwandeln damit sie in OO funktioniert

Beitrag von JK »

ok, dann hoffen wir mal, dass WENNFEHLER einfach bald auch in AOo implementiert wird. :)
Antworten