Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Oder-Funktion überprüft immer 2. Argument

0 views
Skip to first unread message

Marco

unread,
Feb 2, 2007, 5:10:46 PM2/2/07
to
Hallo liebe NG,

Überprüft die ODER-Funktion immer das zweite Argument, auch wenn das
erste bereits wahr ist?

Ich habe folgende Formel:

=IF(or(ISERROR(BF6/O6);BF6/O6=0);NA();BF6/O6)

Ergibt jetzt BF6/O6 einen Fehler, so wird das erste Argument
(ISERROR...) wahr, doch die zweite Bedingung wird trotzdem noch
überprüft. Da das Argument einen Fehler verursacht, entsteht z.B. ein
#VALUE-Fehler was dann auch das Ergebnis in der Zelle ist.
Warum macht Excel das??? Sobald ein Argument einer Oder-Bedingung wahr
ist, sollte auch das Ergebnis wahr sein. Bei Delphi wird schon
Rechenzeitgründen kein weiteres Argument überprüft, wenn das erste
wahr ist....

Vielleicht könnt ihr mir auch mit einer Umformulierung helfen.

Besten Dank schonmal für die Unterstützung

Marco

Klaus "Perry" Pago

unread,
Feb 2, 2007, 5:43:24 PM2/2/07
to

"Marco" <msch...@gmail.com> schrieb im Newsbeitrag
news:1170454246.3...@a34g2000cwb.googlegroups.com...

> Hallo liebe NG,
>
> Überprüft die ODER-Funktion immer das zweite Argument, auch wenn das
> erste bereits wahr ist?
>
> Ich habe folgende Formel:
>
> =IF(or(ISERROR(BF6/O6);BF6/O6=0);NA();BF6/O6)

[snip]

Hallo Marco,
vielleicht hilft ja schon, die Fehlerverursacher zu identifizieren:

=IF(OR(O6=0;BF6=0);NA();BF6/O6)

Gruß
Klaus


Marco

unread,
Feb 2, 2007, 6:03:27 PM2/2/07
to
On 2 Feb., 23:43, "Klaus \"Perry\" Pago" <p...@dachs.ping.de> wrote:

> Hallo Marco,
> vielleicht hilft ja schon, die Fehlerverursacher zu identifizieren:
>
> =IF(OR(O6=0;BF6=0);NA();BF6/O6)
>

Leider nein. Die Felder werden selbst recht aufwendig berechnet. Habe
das Problem lösen können, indem ich die referenzierten Zellen des
Zählers nicht mehr 0 werden können. So muss ich nur noch auf Fehler
überprüfen, nicht mehr auf 0. Manchmal hilft es einfach mal eine
zweite Meinung zu bekommen.

Vielen Dank und gute Nacht

Marco

Klaus "Perry" Pago

unread,
Feb 2, 2007, 9:16:27 PM2/2/07
to

"Marco" <msch...@gmail.com> schrieb im Newsbeitrag
news:1170457407....@h3g2000cwc.googlegroups.com...

Ja, andere Sichtweisen helfen manchmal - ich vermute, die Fehlermeldung wird
schon über die vorherigen Formeln "durchgereicht", und dann ist Excel
erbarmungslos konsequent.

Gruß
Klaus


Werni Barny

unread,
Feb 3, 2007, 4:37:01 AM2/3/07
to
Hallo Marco

Hier ein anderer Lösungsansatz.

Eine "wenn-oder-" Abfrage behandelt immer das ganze ab. Um dies zu umgehen
gehts mit einer "verschachtelten" Abfrage.

==> wenn(Argument_1=Wahr;dann Ergebnins_1;sonst wenn(Argument_2=WAHR;dann
Ergebnis_2, sonst Ergebnis_3))

Auf Deine Formel bezogen müsste diese wie folgt aussehen:

=IF(ISERROR(BF6/O6)=TRUE;NA();IF(BF6/O6=0;NA();BF6/O6))
Was der Ausdruck "NA()" bedeutet weiss ich nicht. Muss dieser nicht ev. in
Anführungszeichen stehen?

Gruss Ruedi
--
Freundliche Grüsse
Werni

Marco

unread,
Feb 3, 2007, 5:01:25 AM2/3/07
to
On 3 Feb., 10:37, Werni Barny <WerniBa...@discussions.microsoft.com>
wrote:
> Hallo Marco

>
> =IF(ISERROR(BF6/O6)=TRUE;NA();IF(BF6/O6=0;NA();BF6/O6))

Danke, so wird es in der Tat gehen, trotzdem komisch, dass Excel noch
das zweite Argument überprüft.


> Was der Ausdruck "NA()" bedeutet weiß ich nicht. Muss dieser nicht ev. in
> Anführungszeichen stehen?
>
Das ist das gleiche wie in der deutschen Version das NV().

Danke für den Tipp und Gruß

Marco

Marco

unread,
Feb 3, 2007, 5:05:42 AM2/3/07
to
On 3 Feb., 03:16, "Klaus \"Perry\" Pago" <p...@dachs.ping.de> wrote:


> ich vermute, die Fehlermeldung wird
> schon über die vorherigen Formeln "durchgereicht", und dann ist Excel
> erbarmungslos konsequent.

Die Fehlermeldung entstand, wenn der Zähler ="" ist (#VALUE), oder
wenn der Nenner gleich 0 ist (#DIV/0). Aus dem Grund frage ich ja den
Fehler ab. Blöd war nur, dass der Zähler auch 0 sein konnte. Das habe
ich jetzt beseitigt, und mir somit den Test auf 0 als Gesamtergebnis
erspart.

Vielen Dank nochmal für die wochenendliche Hilfe

Marco

Bernd

unread,
Feb 3, 2007, 5:23:50 AM2/3/07
to
Hallo Marco,

dieses Verhalten beruht IMHO auf der gewünschten Abwärtskompatibilität
von Excel.

Es ist aber ein Leichtes, eigene Funktionen einzusetzen, die nicht
notwendigerweise alle Argumente auswerten:

Function mor(ParamArray a() As Variant) As Boolean
'My own Or does not necessarily evaluate all args
Dim i As Long
For i = LBound(a) To UBound(a)
If a(i) Then
mor = True
Exit Function
End If
Next i
mor = False
End Function

Function mand(ParamArray a() As Variant) As Boolean
'My own And does not necessarily evaluate all args
Dim i As Long
For i = LBound(a) To UBound(a)
If Not a(i) Then
mand = False
Exit Function
End If
Next i
mand = True
End Function

Diese Funktionen können sowohl von VBA als auch von Tabellenfunktionen
aus aufgerufen werden.

Viele Grüße,
Bernd

Marco

unread,
Feb 3, 2007, 7:38:51 AM2/3/07
to
On 3 Feb., 11:23, "Bernd" <bplumh...@gmail.com> wrote:
> Hallo Marco,

>
> Es ist aber ein Leichtes, eigene Funktionen einzusetzen, die nicht
> notwendigerweise alle Argumente auswerten:

Danke, werde ich mal übernehmen... ;o)

> Viele Grüße,
> Bernd

Und viele Grüße zurück

Marco

0 new messages