0

Excelスプレッドシートで奇妙な状況が発生しています。以下のように、単純なネストされた IF ステートメントを適用しています。

= IF( AND(A1-INT(A1)>=0.3,A1-INT(A1)<=0.7),INT(A1)+0.5,
    IF( AND(A1-INT(A1)>=0,A1-INT(A1)<=0.2),INT(A1),
        IF( AND(A1-INT(A1)>=0.8,A1-INT(A1)<=0.9),INT(A1)+1, "NON-CHECKED"    )
       )
    )

「A1」の値が 32.9 の場合、結果は 33 になるはずです。値が「63.9」になるまで問題なく動作します。A1 に「64.9」の値が含まれるとすぐに、最後の状態がチェックされず、「NON-CHECKED」が出力されます。

値が 63.9 になるまで正常に動作し、その後 FALSE になり始めるのは奇妙なことです。

Office Suit と Google Docs でも同じ式を試しました。

ここで何か不足していますか?

ここで式をテストできます。

サンプル スプレッドシート

ありがとう。

4

2 に答える 2

1

A1-INT(A1) を ROUND(MOD(A1,1),10) に置き換えてみてください。これは、10^9 未満の数値で機能するようです。より大きな数値で作業する場合は、精度を下げる必要があります。

于 2015-03-28T20:48:14.713 に答える
0

最も近い0.5に丸めているだけではありませんか?MROUND関数はそれを行います

=MROUND(A1,0.5)

于 2015-03-29T01:04:51.093 に答える