doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

Excelの時間計算で####になる原因と3つの対処法【勤怠表で使える】

スポンサーリンク

退勤の打刻が始業より早い行を計算した瞬間、セルが「########」で埋まって数字が一切読めなくなる——。マイナスの勤務時間や経過時間を扱おうとしたときに、多くの人がこの壁にぶつかります。やっかいなのは、列幅を広げても直らないこと。この記事では、なぜこの現象が起きるのかを切り分けたうえで、状況別に選べる3つの対処法を、入力値と表示結果の具体例つきで解説します。

Excelの時間計算で####になる原因と3つの対処法【勤怠表で使える】のサンプル ▲ Excel サンプル

なぜ時間計算で「####」になるのか

まず知っておきたいのは、Excelで「####」が出る原因には、まったく別の2つがあるという点です。

1つ目は、単純に列幅が足りないケース。数値や日付がセル幅に収まらないとき、Excelは中途半端に切れた数字を見せる代わりに「####」と表示します。この場合は列の境界線をダブルクリックすれば一発で直ります。

2つ目が本題で、時間(シリアル値)の計算結果がマイナスになったケースです。こちらは列幅をどれだけ広げても絶対に直りません。あなたが今困っているのが直らないタイプなら、原因はこちらです。

Excelが時間を「数値」として扱う仕組み

Excelの内部では、時刻は「1日=1」とする小数で管理されています。正午(12:00)は0.5、6時間は0.25という具合です。日付も同じく「1900年1月1日=1」から数えたシリアル値で持っています。

ところが標準の時刻表示形式は、マイナスのシリアル値を表現できません。たとえば「17:00 − 18:00 = −1時間」を計算すると、内部では負の数になりますが、時刻形式にはこれを表示する手段がないため、Excelは「########」を返すのです。

対処法その1:1904年日付システムに切り替える

こんな人向け:日付データが入っていない、時間計算専用の使い捨てブック

最も手軽なのが、ブックの日付システムを変更する方法です。

  1. 「ファイル」→「オプション」を開く
  2. 「詳細設定」を選択
  3. 「次のブックを計算するとき」の項目で「1904年から計算する」にチェックを入れる

これだけで、マイナスの時間が「-1:00」のようにそのまま表示されます。たとえば A1=17:00、B1=18:00 で =A1-B1 とすれば、結果は「-1:00」と出ます。

ただし重大な注意点があります。この設定はブック全体に影響し、すでに入力済みの日付がずれてしまいます。1900年日付システムと1904年日付システムの差は1,462日(約4年と1日)。「約4年ずれる」とイメージしておくと安全です。日付が入ったブックでは安易に切り替えないでください。新規ブックや時間計算専用ブック向けの手段です。

対処法その2:ABS関数で絶対値にする

こんな人向け:プラスかマイナスかは不要で、差の「大きさ」だけ知りたい

符号は気にせず、差の大きさだけを正の時間で表示したいなら、ABS関数が便利です。

=ABS(A1-B1)

A1=17:00、B1=18:00 のとき、結果は「1:00」。マイナス分でも必ず正の時間になります。ただし「マイナスだった」という情報は消えるため、超過か不足かを区別したいときは次の方法と組み合わせます。

対処法その3:IF+TEXT関数で符号を文字として付ける(実用的)

こんな人向け:既存データを壊したくない勤怠管理表・実務の表

実務で最もおすすめなのが、IFTEXTを組み合わせる方法です。1904年日付システムに切り替えなくても、マイナスの時間を「-1:00」のように表示できます。

=IF(A1>=B1, TEXT(A1-B1,"h:mm"), "-"&TEXT(B1-A1,"h:mm"))

考え方はこうです。

  • A1>=B1 のとき(プラスまたはゼロ)はそのまま差を表示
  • そうでないとき(マイナス)は大小を入れ替えて差を求め、頭に「-」を付ける

具体例で確認しましょう。

  • A1=18:00、B1=9:00 → 「9:00」
  • A1=9:00、B1=18:00 → 「-9:00」

TEXTで文字列に変換しているため、時刻形式の制約を受けず安全にマイナス表記ができます。なお書式 "h:mm"mm は分を2桁で表示するので、9時5分は「9:5」ではなく正しく「9:05」と出ます。

デメリットは、結果が「文字列」になること。その値をさらに別の計算に使う場合は工夫が必要なので、表示専用の列として使うのが無難です。

<コラム>24時間を超える時間を表示したいとき

マイナスとは別問題ですが、つまずきやすいので触れておきます。合計時間が24時間を超えると「25:00」が「1:00」に戻ってしまう現象です。これは表示形式を次のように設定すれば解決します。

[h]:mm

hを角カッコで囲むと、24時間を超えても繰り上がらず累計で表示されます。たとえば月間の勤務時間合計が「125:30」のように出せるので、勤怠集計とセットで覚えておくと便利です。

まとめ:結局どれを選べばいい?

Excelの時間計算で「####」になる原因と対処法を整理します。

  • 列幅を広げても直らないなら、原因はマイナスの時間
  • ブック専用なら1904年日付システム(既存の日付は約4年ずれるので注意)
  • 既存ブックを壊したくないならIF+TEXT関数で安全にマイナス表記
  • 大きさだけ欲しいならABS関数
  • 24時間超の合計は[h]:mm形式

迷ったらIF+TEXT。 既存データを壊さず、勤怠管理表でそのまま使えるのが決め手です。「####」が出ても慌てず、まずは列幅か時間か、原因を切り分けるところから始めましょう。


関連記事

あわせてチェック


この記事を読んだ方におすすめ

【中古】超初心者でも3時間でわかる!魔法のExcel関数&計算式 / 大村あつし

【中古】超初心者でも3時間でわかる!魔法のExcel関数&計算式 / 大村あつし ¥275

    超初心者でも3時間でわかる!魔法のExcel関数&計算式 単行本 の詳細 Excelの本当に使える関数だけを、つまずきやすいポイントを押さえて、難しい単語を使わず…

楽天市場で詳細を見る → 【中古】超初心者でも3時間でわかる!魔法のExcel関数&計算式 / 大村あつし