【Excel】残業時間がマイナス・####になる原因と解決方法|IF関数とMAX関数で正しく計算

Excelで残業時間を計算していると「マイナスになる」「####と表示される」「#VALUE!エラーが出る」という問題によく遭遇します。

これはExcelの時間の仕組みが原因です。この記事では原因と3つの解決方法を実務目線で解説します。


なぜ残業時間がマイナスになるのか?

例えばこんな計算式を使っているとします。

=退勤時刻 - 出勤時刻 - 所定労働時間
例)=B2-A2-C2 (18:00-9:00-8:00=1:00)

残業がある日はうまく計算できます。しかし残業なしの日や早退した日に式を使うと、結果がマイナスになりExcelが####と表示します。

Excelは標準設定ではマイナスの時間を表示できない(シリアル値がマイナスになるため)ので、エラーになります。

セルナ先生:「給与計算でこのエラーを見た時、最初は壊れたと思いました。でも原因を知ると対処は簡単です」


解決方法①:MAX関数でマイナスを0にする(最もシンプル)

残業時間がマイナスになっても0として扱いたい場合は、MAX関数を組み合わせます。

=MAX(0, B2-A2-C2)

「0かB2-A2-C2の大きい方を返す」という意味です。計算結果がマイナスになっても0が表示されます。


解決方法②:IF関数でマイナスの場合を除外する

=IF(B2-A2-C2<0, 0, B2-A2-C2)

「もし計算結果が0より小さければ0、そうでなければ計算結果を表示」という式です。MAX関数と同じ結果になりますが、IF関数に慣れている方はこちらの方が読みやすいかもしれません。


解決方法③:1904年日付システムに変更(全体設定)

Excelの設定で「1904年から計算する」をオンにすると、マイナスの時間も表示できるようになります。

  1. 「ファイル」→「オプション」→「詳細設定」
  2. 「このブックの計算をするとき」セクションの「1904年から計算する」にチェック
  3. OKを押す

ただし、この設定はブック全体に影響します。既存のデータの日付がずれる可能性があるため、新規ブックで使うか、影響を確認してから設定してください。


####エラーの別の原因:列幅が狭い

「####が出る=マイナス時間」と思いがちですが、単純に列幅が狭い場合もあります。列の境界線をドラッグして広げるだけで直ることがあるので、まず確認してみましょう。


まとめ

  • 残業時間がマイナスになるのは、Excelがマイナス時間を表示できないのが原因
  • 最も簡単な解決策は=MAX(0, 計算式)でマイナスを0にする
  • IF関数でも同様の処理ができる
  • ####は列幅不足でも出るので確認すること

👉 【Excel】24時間以上が表示されない問題と[h]:mmの使い方

コメント