退勤の打刻が始業より早い行を計算した瞬間、セルが「########」で埋まって数字が一切読めなくなる——。マイナスの勤務時間や経過時間を扱おうとしたときに、多くの人がこの壁にぶつかります。やっかいなのは、列幅を広げても直らないこと。この記事では、なぜこの現象が起きるのかを切り分けたうえで、状況別に選べる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年日付システムに切り替える
こんな人向け:日付データが入っていない、時間計算専用の使い捨てブック
最も手軽なのが、ブックの日付システムを変更する方法です。
- 「ファイル」→「オプション」を開く
- 「詳細設定」を選択
- 「次のブックを計算するとき」の項目で「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関数で符号を文字として付ける(実用的)
こんな人向け:既存データを壊したくない勤怠管理表・実務の表
実務で最もおすすめなのが、IFとTEXTを組み合わせる方法です。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。 既存データを壊さず、勤怠管理表でそのまま使えるのが決め手です。「####」が出ても慌てず、まずは列幅か時間か、原因を切り分けるところから始めましょう。
関連記事
- Excelで秒数を時:分:秒に変換|コピペで使えるTEXT関数と表示形式の使い分け
- Excelで時間を分に変換する方法|×1440・HOUR・MINUTEの使い分け
- 専用ソフト不要 ― Excelだけで「済」「確認」の朱色スタンプを作ってワンクリックで押す方法
- Excelで○×を集計する方法|COUNTIF・IFで数える&点数化【コピペ式付き】
- Excelでチェックマーク(レ点)を入れる4つの方法|クリックで切り替えられるチェックボックスの作り方も解説
あわせてチェック
この記事を読んだ方におすすめ
【中古】超初心者でも3時間でわかる!魔法のExcel関数&計算式 / 大村あつし ¥275
超初心者でも3時間でわかる!魔法のExcel関数&計算式 単行本 の詳細 Excelの本当に使える関数だけを、つまずきやすいポイントを押さえて、難しい単語を使わず…
楽天市場で詳細を見る → 【中古】超初心者でも3時間でわかる!魔法のExcel関数&計算式 / 大村あつし