I30
=IF(AND(ABS(I29-I28)<=0.01,ABS(I29-J28)<=0.01,ABS(I29-2.6)<=0.02),"合","否")
I34
=IF(AND(ABS(I33-I32)<=0.01,ABS(I33-J32)<=0.01,I33>=2.5),"合","否")
I28,J28,I29,I32,J32,I33はROUND,桁数2で四捨五入しています
上記のように数式を組んだのですが、どうもABS(I29-J28)やABS(I33-J32)の0.01が0.01以下に含まれていないようです
ABS抜いても同様だったので絶対値関係ありませんでした
<0.02などにすればひとまず解決なのですがもやっとします、何か他に解決方法はあるでしょうか
Newginger
2020.08.24 14:40:05
(2020.08.24 17:08:40 更新)
207
演算誤差が原因だと思います。
Excelでは内部的に二進数に直して計算しているため、少数同士の引き算等では誤差が生じる場合があります。
今回のケースの場合、
2.58 - 2.57 = 0.0100000000000002
になっているようです。
(桁数を増やして表示すると確認できると思います。)
対策としては、計算値を丸めた上で比較するとかでしょうか。
shirohonoka
2020.08.24 18:48:27
(2020.08.24 20:14:18 更新)
=IF(AND(ABS(ROUND(D10-D9,2))<=0.01,ABS(ROUND(D10-E9,2))<=0.01,ABS(D10-2.6)<=0.02),"合","否")
の様にしたら正常な結果が出ました
ありがとうございました。
|
コメントするには ログイン していただく必要があります。