10

Excelのif関数は、条件、if-true値、およびif-false値の3つの引数を取ります。Excelは3つの引数すべての値を計算しますか、それとも条件の値と対応する結果のみを計算しますか?

明確化:結果がどうなるか疑問に思ってifいません。関数の結果を計算する前に、すべての引数の値を計算するかどうか疑問に思っています。

ifこれは、関数が遅延評価または厳密評価を使用するかどうかを尋ねるのと同じです。たとえば、次の擬似コード:

x = 5;
print x>2 ? "Bigger" : "Smaller" + 1/0

1/0演算子に結果が必要ない場合でも、を評価するため、完全に厳密な評価を行う言語ではゼロ除算例外がスローされ?:ます。

遅延評価言語では、?:演算子は、評価x>2する式を決定する前に評価します。

問題は、Excelで、式に存在する可能1/0性のある正当な値(たまたま)を生成することです。#DIV/0!したがって、単に呼び出すだけで=if(true,1,1/0)は、Excelが評価しているかどうかはわかり1/0ません。

4

5 に答える 5

6

テストするために非常に東

? iif(true, 1, 1/0) 'run-time error: division by zero

私はあなたが本当にiif()を意味していると思います-VBAではこれは「短絡」しないので、それがIf..Then..Else..End If問題になる可能性がある場合に使用する必要があります。

わかりました-あなたが本当に尋ねたことをテストします:

'In a VBA module
Function TruePart()
      MsgBox "True part"
      TruePart = "True"
End Function


Function FalsePart()
      MsgBox "False part"
      FalsePart = "False"
End Function

セル内:=IF(TRUE,truepart(),falsepart())

IF()セルの計算ごとに1つのmsgboxのみを取得します。

さらなる検証として、これにより2つのmsgboxが提供されます(それぞれに1つずつ)。

Sub Tester()
    Debug.Print IIf(True, TruePart(), FalsePart())
End Sub 
于 2012-05-03T22:39:29.107 に答える
5

そうではありません。

Excel 2013は、必要なコードのみを評価します。

数十万行をコピーするには、非常に複雑で時間のかかるセル式がありました。計算には数時間かかります。しかし幸いなことに、結果がゼロになる時期を他の基準に基づいて判断するのは簡単でした。

したがって、他の基準でゼロでなければならないことが示唆されたときに計算を回避するためにIfステートメントを使用し、必要な場合にのみ計算を実行すると、プロセスが大幅に高速化され、処理時間が以前の約10%に短縮されます。

Excelが両方の式を評価している場合、Ifステートメントは複雑さと時間を追加するだけでした。

于 2015-01-07T13:47:42.893 に答える
3

いくつかの簡単なテスト:

=IF(TRUE,1,1/0)

=IF(FALSE,1/0,1)

どちらもdiv/0エラーにはならないため、条件の対応する結果のみが実際に評価されていると結論付けることができます。明らかに、状態自体も評価する必要があります。

より複雑な数式では、数式の評価ツールを使用して、IFステートメントがどのように解析されるかを監視することもできます。

于 2012-05-03T22:44:49.323 に答える
2

Excelは、IF()関数に先行評価を使用しているようです(つまり、常に3つの引数すべてを評価します)。VBAなしでテストするには、自動ブック計算をオンにして、新しいブックのセルに入力します。

=IF(TRUE, 0, RAND())

ブックを保存して閉じます。RAND()ブックをもう一度開いてもう一度閉じると、揮発性関数が評価されているため、Excelに「変更の保存」プロンプトが表示されます。

に変更RAND()する1と、Excelにプロンプ​​トが表示されません。

于 2016-08-05T16:29:13.980 に答える
0

代わりにXL2010If Functionに基づいて、Timとは反対の答えがあります。

=IF(TRUE,1,1/0)

#DIV / 0エラーは発生しませんが、

=IF(FALSE,1,1/0)

します。また、私の読書は、適切な条件のみが評価されることを意味します。

于 2012-05-03T22:43:37.007 に答える