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

「残業時間がマイナスになった!」「####になって数字が見えない!」

Excelで勤怠管理をしていると、残業時間の計算でこういった問題が起きることがあります。焦りますよね。でも原因がわかれば、かんたんに解決できます。

毎月この修正作業に時間を取られていると、それだけで定時を過ぎてしまいます。一度仕組みを直しておけば、来月以降は確認だけで済むようになります。

この記事では、よくある2つの問題「マイナス表示」と「####表示」の原因と解決策をわかりやすく解説します。

アイ先生
アイ先生

マイナス表示も####も、原因がわかればどちらも1分以内に直せますよ。仕組みごと覚えておきましょう!

問題1:残業時間がマイナスになる

なぜマイナスになるのか?

たとえば「退勤時間 – 出勤時間 – 所定労働時間」で残業時間を計算しているとき、残業がゼロの日や早退した日に「マイナスの時間」が出てしまうことがあります。

Excelでは、時刻の引き算でマイナスの値が出ると、そのままマイナスで表示されてしまいます。

解決方法1:IF関数でマイナスを0にする

残業時間が0未満になった場合に、0を表示するように修正します。

【修正前】
=C2-B2-“8:00”

【修正後】
=IF(C2-B2-“8:00″<0, 0, C2-B2-“8:00”)

この式の意味:「退勤 – 出勤 – 8時間」の計算結果がマイナスなら0、そうでなければ計算結果を表示する。

解決方法2:MAX関数でシンプルに解決

MAX関数を使うともっとシンプルに書けます。

=MAX(0, C2-B2-“8:00”)

この式の意味:計算結果と0を比べて、大きい方を表示する。計算結果がマイナスなら0が選ばれます。

ポイント:MAX関数はシンプルでおすすめ
=MAX(0, 残業時間の計算式) の形で書くだけです。IF関数より短く書けて、後から見たときにも意味がわかりやすいです。

問題2:####(シャープ)になって数字が見えない

なぜ####になるのか?

####という表示は「列幅が狭くて、数値が表示しきれません」というサインです。列を広げるだけで解決します。

解決方法1:列幅を広げる

  1. ####が表示されている列のアルファベット(例:C)と隣の列の間にある境界線にマウスを合わせる
  2. カーソルが左右の矢印(↔)に変わる
  3. ダブルクリックすると、内容に合わせて自動的に列幅が調整される

解決方法2:表示形式が間違っている場合

時間の計算結果が正しく表示されない場合、セルの表示形式が「数値」になっていることがあります。

  1. ####のセルを選択する
  2. 右クリック→「セルの書式設定」を開く
  3. 「表示形式」タブで「時刻」を選ぶ
  4. OKをクリック
⌨ ショートカット派セルの書式設定はCtrl+1で一発で開けます。列幅のダブルクリックと組み合わせれば、####対応は数秒で終わります。

問題3:24時間以上の合計時間が正しく表示されない

月の残業時間を合計したとき、「30:00」などと表示されず「6:00」のようにおかしな値になることがあります。これは表示形式の問題です。

解決方法:[h]:mm の表示形式を使う

  1. 合計時間のセルを選択する
  2. 右クリック→「セルの書式設定」を開く
  3. 「表示形式」タブで「ユーザー定義」を選ぶ
  4. 種類の入力欄に [h]:mm と入力する
  5. OKをクリック
ポイント:[h]とh の違い
・h:mm → 24時間を超えると0に戻る(例:25時間は「1:00」と表示される)
・[h]:mm → 24時間を超えても正しく表示される(例:25時間は「25:00」と表示される)
残業時間の合計には必ず[h]:mmを使いましょう。

図解:3つの症状と直し方

①マイナス表示 → MAX(0,計算式) ②#### → 列境界線をダブルクリック ③合計がおかしい → 表示形式を[h]:mmに変更

よくある時間計算エラーと対処法まとめ

症状原因解決方法
残業時間がマイナスになる残業がゼロ以下の計算結果MAX(0, 計算式) を使う
####が表示される列幅が狭い列の境界線をダブルクリック
合計時間がおかしい24時間以上の表示形式が違う表示形式を[h]:mmにする
時間が小数で表示される表示形式が「数値」になっている表示形式を「時刻」に変更
注意:時間の計算は「文字列」ではなく「時刻形式」で入力する
「8:00」と入力したつもりでも、セルが文字列として認識している場合は計算できません。セルを確認して、左揃えになっていたら文字列です(時刻は右揃えになります)。再入力するか、表示形式を「時刻」に変更してください。

よくある質問

Q:MAX関数を使ったのに、まだマイナスが表示されます
A:数式の参照セルが正しいか確認してください。また、セルの表示形式が「数値」になっているとマイナスの数値として表示されることがあります。表示形式を「時刻」に変更してみてください。

Q:残業時間を「分」単位で計算したい場合はどうしますか?
A:時間の値に24×60を掛けると分に変換できます。例:=MAX(0, C2-B2-“8:00”)*24*60 で分単位の数値になります。

Q:Googleスプレッドシートでも同じ数式が使えますか?
A:はい。MAX関数・IF関数はGoogleスプレッドシートでも同じ書き方で使えます。####表示も同様に列幅を広げれば解決します。

まとめ

残業時間のマイナス問題は「=MAX(0, 計算式)」で解決、####は列幅を広げるか表示形式の確認で解決できます。どちらも一度仕組みを理解すれば、次からはすぐ対処できます。

勤怠管理のExcelは毎月使うものだからこそ、正しい数式を組んでおくことが大切です。ぜひこの機会に見直してみてください!

アイ先生
アイ先生

勤怠表の数式は一度直したら終わりです。次の関連記事も合わせて見直しておくと安心ですよ。

コメント