データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
>C1の式を『=ROUNDDOWN((ROUND(A1-B1,1))*150,0)』にしようと思いますが、これでも誤差が生じることがありますでしょうか?
今回のケースは「A1-B1」の値が小数点1桁目で丸め誤差のない数字になるために、偶然一致しただけで、その後に掛け算などの演算をしているので、さらに演算誤差が出る可能性があるので、推奨できる方法ではありません。
すなわち、ROUNDDOWNする計算部分全体を十分な桁数で四捨五入してから小数点以下を切り捨てるような数式にします。
=ROUNDDOWN(ROUND((A1-B1)*150,10),0)
どちらかというと、以下のTEXT関数の数式の方が広く使用できます。
=ROUNDOWN(TEXT((A1-B1)*150,"G/標準")*1,0)
>また、その他に計算間違いが生じたり不具合があったりすることはありませんか?
小数点以下の数値を扱い、切り捨てや切り上げ、あるいは大小関係を判定する場合に注意が必要です。
よくある間違いは、時間(時刻)を引き算で計算した場合や、オートフィルで入力すると、その時間は手入力した時間と違うため、大小関係での判定や時間の切り捨て処理などで間違えた結果を導くことになります。
例えば、1時間ごとのデータをオートフィルタで作成したいなら、以下のような数式をオートフィルすることになります(例えばA1セルに0:00と入力してB1セルに以下の式を入力して右方向にオートフィル)。1
=TEXT(A1+"1:00","h:mm")*1
同様にA1セルからB1セルの時間の差を求めた場合も、単純な引き算ではなく以下のようにしないと手入力デーと同じデータになっていません(鍵かっこは24時間以上の時間の差を計算する場合)。
=TEXT(A1-B1,""[h]:mm")*1