エクセルで、関数を使って勤務時間の計算を行っていて、0:00を表示しないようにしたいです。 ・関数の内容 S13=IFERROR(MIN(M13-J13-P13,$AJ$2),"")

補足

関数にする必要が無かったですね。 ただの引き算で良かったです

Excel86閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

ThanksImg質問者からのお礼コメント

皆さまありがとうございました! 演算誤差という事を恥ずかしながら初めて知りました! 勉強させて頂きます!

お礼日時:6/27 17:16

その他の回答(3件)

0

5.55112E-17はすごく微小な数値です。よくある演算誤差ですね。 iferror関数で空文字列を返すのをやめゼロにして、mround関数で包んで1秒単位くらいにまるめましょう。それで穏当になります。

0

FLOOR関数を使って =FLOOR(日時-日時,0.0001) のようにしてみてください。 <以下説明です> Excelでは日時をシリアル値で管理しています。 1900/1/1が1で以後1日増えるごとに、1が足されます。 例えば、2022/6/27はシリアル値44739で、1900/1/1から44739日経っていることを意味します。 一方、1日未満は小数点以下で管理されています。 しかし、計算機において管理できる小数点以下の桁数には限りがあるため、1/3など割り切れない数字はどこかで打ち切りになります。 そのため、本来は0になるはずの引き算でも僅かに差が生まれることがあります。 そこでFLOOR関数を使います。 FLOOR関数は基準値の倍数で切り捨てる関数です。 たとえば、=FLOOR(365,50) とすると350となります。 50区切りで切り捨てていることが分かるかと思います。 同じように日時に対しても、冒頭のように =FLOOR(日時-日時,0.0001) としてやると、8.64秒(1日86400秒×0.0001)区切りで切り捨てるため、本来0になる引き算が0になりやすくなります。 基準値は状況に合わせて調整されたらと思います。