openoffice-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wolfgang Jäth <jawo.ml.hams...@arcor.de>
Subject Re: Fehlerabfrage in CALC mit "WENN-ODER"
Date Wed, 11 Nov 2015 17:04:06 GMT
Am 11.11.2015 um 13:58 schrieb Semmel:
> 
> Ist eine „ODER“ Verknüpfung in Verbindung mit „ISTFEHLER“ nicht möglich 
> oder wo liegt mein Bock?
> 
> Gegeben sind zwei Tabellenblätter. Im ersten befindet sich eine 
> Übersichtstabelle, in der verschiedene Jahre waagerecht (Zeile 4) und 
> die Monate senkrecht (Spalte 1, ab Zeile 4) eingetragen sind. Über diese 
> Zuordnung von Monat und Jahr suche ich nun im Tabellenblatt 2 („Daten“) 
> nach den entsprechenden Werten.
> 
> Weshalb aber gibt mir die folgende Formel ein #NV aus, wenn das 
> entsprechende Datum nicht gefunden wird, *obwohl* ich das mit einem 
> „ISTFEHLER“ versucht habe abzufangen?
> 
> =WENN(ODER(ISTFEHLER(SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;0));SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;1)<1);"

> ";SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;0))
> 
> 
> „Ziehe“ ich die Formel auseinander und frage mit WENN (*ohne* ein 
> „ODER“) ab, ob
> a) ein Fehler besteht 
> [=WENN(ISTFEHLER(SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;0));" 
> ";SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;0))], dann 
> klappt das und die Zelle bleibt wie gewünscht leer und

Also liefert ISTFEHLER das Ergebnis FALSCH zurück; das bedeutet, dass
die nächste Bedingung abgefragt werden muss, denn die könnte ja TRUE sein.

> b) der gesuchte Wert kleiner 1 ist 
> [=WENN(SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;1)<1);" 
> ";SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;0))], dann 
> klappt auch das für sich genommen, wenn das gesuchte Datum besteht. Aber 
> „es geht“ in dem Augenblick nicht mehr (Ergebnis: #NV), wenn das Datum 
> erst gar nicht gefunden wird (was mir in dieser entzerrten Konstellation 
> auch klar ist).

In Calc werden bei den Funktionen UND und ODER anscheinend *alle*
angegebenen Bedingungen ausgewertet; ein vorzeitiger Abbruch, wie aus
den gängigen Programmiersprachen o. ä. gewohnt, findet *nicht* statt.

Du müsstest die Bedingungen also entkoppeln, und zwei ineinander
geschachtelte Abfragen verwenden:

|
=WENN(ISTFEHLER(SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;0));"";WENN(SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;1)<1;"";SVERWEIS(DATUM(B$4;ZEILE(A5)-4;1);Daten.$I$3:$L2632;4;0)))

Es gibt aber noch eine IMHO elegantere (aber zugegeben auch etwas
quick-and-dirty) Lösung, und zwar einfach die Ausgabe bestimmter Werte
zu unterdrücken (ohne die Hochkomma):

| Format => Zellen => Zahlen => Format-Code = "[<1]@;0.#"

Genau genommen wird hier im Fall von Werten kleiner 1 eine Textausgabe
erzwungen ("@"), nur dass für den auszugebende Wert gar kein Wert in
Textform vorliegt, sondern nur ein Wert in Zahlform. Daher wird ein
Leerstring ausgegeben. Da in dieser Form auch keine Funktion o. ä.
aufgerufen wird, wird auch keine automatische Konvertierung von Zahl
nach Text vorgenommen.

Wolfgang
-- 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Mime
View raw message