• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:勤怠の集計表をエクセルで作成しました。 )

勤怠集計表のエクセルでの表示が正しくありません

このQ&Aのポイント
  • 勤怠集計表をエクセルで作成しましたが、表示が正しくありません。
  • エクセルの関数を使用して勤怠の集計表を作成しましたが、残業時間の表示に問題があります。
  • 勤怠集計表のエクセルファイルを作成しましたが、求められた時間が正しく表示されません。

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

>ちなみに、私が組んだ関数は以下の通りです。 =IF(J6>"22:00",O6-"8:00"-R6-P6,IF(J6<"22:00",O6-"8:00"-P6)) 上記の数式には重要な誤りが2つあります。 まず今回の#####がセルに表示されるのは、計算結果がぴったり「0」でなく、正確にはごくわずか0より小さい値となっているためです。 その原因は、時間などの小数点以下の数字を演算(特に引き算)したときに発生する丸め誤差によるものです。 すなわち、2進数で表せない時間などの数値を引き算すると、本来0となるべき値が0とならずに0よりもわずかに大きいまたは小さい値となるわけです(セルの書式を「数値」にして小数点以下の桁数を15ケタ以上表示してみてください)。 0よりも大きい場合は表示上気がつきませんが、0より小さい値となった場合は、今回のようにエラー表示されることになります。 このような誤差は、時間を引き算したデータで大小の条件判定する場合にも(以上や以下を比較する場合に)出ますので、数式を作成する場合は微小値を加減するなど注意が必要です。 提示された数式のもう1つの重要な誤りは、時間の大小比較で「=IF(J6>"22:00",…」の条件式がありますが、これは左が数値で右が文字列になっているのでいずれの場合もFALSEを返します(文字列は数字よりも大きい)。 正しくは「「=IF(J6>"22:00"*1,…」」のように1を掛けて数値化した値と比較する必要があります(「「=IF(J6-"22:00">0,…」でもOKIです)。

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です! たびたびすみません。 もしかして、浮動小数点の影響かもしれません。 計算結果が表示上(10進数)で「0:00」であっても、2進数で表示する場合は微妙に誤差が生じることがあります。 たぶん限りなく「0」に近いマイナス結果になっているのではないでしょうか? ↓のURLが参考になるかもしれません。 http://support.microsoft.com/kb/78113/ja 解決方法として、ROUND関数等を併用する方法があるみたいです。 的外れなら読み流してくださいね。 何度も失礼しました。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 少し気になることがあるので、回答ではないのですが顔を出してしまいました。 もしかしてそのセルの計算結果はマイナスになっているのではないでしょうか? 確認の意味で、当方使用のExcel2003の場合の方法ですけど、 メニュー → ツール → オプション → 「計算方法」 → 「1904年から計算する」 にチェックを入れてみてください。 もし、計算結果がマイナスの場合はマイナス表示されると思います。 万一そうなってしまった場合、希望の結果とは異なってしまいますね! と言うことは計算式をやり直さないといけないかもしれません。 以上、余計なお世話かもしれませんが、 失礼しました。m(__)m

  • Ranford
  • ベストアンサー率33% (3/9)
回答No.2

横幅が足りないからではないでしょうか?

回答No.1

J6セル22:00ぴったりの場合はどうするのでしょう? とりあえず、文字列をシリアル値に変換、 22:00の場合は 「O6-"8:00"-P6」としました。 =IF(J6>"22:00"*1,O6-"8:00"-R6-P6,O6-"8:00"-P6) 計算内容まで詳しく見ていません。