ADVERTISEMENT
目次
1. Excelが時刻の計算で「1分」を失う技術的な背景
Excelで勤務時間や作業時間を計算する際、「10:00 – 9:00」の結果が「1:00」のはずなのに、特定の条件下で「0:59」と表示されたり、計算結果が1分足りなくなったりすることがあります。これはExcelのバグではなく、コンピュータ特有の「浮動小数点誤差」という数値処理の限界が原因です。
Excelは時刻を「シリアル値」という0から1までの小数で管理しています。1日は「1」、1時間は「1/24」、1分は「1/1440」です。しかし、「1/1440」という数値は2進数で表現すると無限小数になり、メモリに格納する際に末尾がわずかに切り捨てられます。この「目に見えない極小の不足」が積み重なると、Excelは「0.99999…分」を「0分」と切り捨てて判定してしまい、結果として1分の誤差が生じるのです。
2. 手順①:TEXT関数による「正規化」で誤差を切り捨てる
最も手軽で効果的なのが、TEXT関数を使って時刻を一度文字列の書式に当てはめ、再び数値に戻す方法です。これにより、目に見えない桁のゴミを掃除できます。
- 時刻の引き算を行うセルに次の数式を入力します。
- =TEXT(B2-A2, “h:mm”)*1
- 「*1」を加えることで、TEXT関数で文字列になった時刻を再びExcelが計算可能な「シリアル値」に変換します。
この操作を通すと、内部で「0.0416666666666666」といった中途半端な数値になっていたシリアル値が、正確な1時間の値(0.0416666666666667)に丸められ、誤差が消滅します。
3. 手順②:MROUND関数で「1分単位」に吸着させる
計算結果を他の数式(給与計算など)に利用する場合、MROUND関数を使って「最も近い1分」に強制的に吸着させるのが安全です。
- 数式を =MROUND(B2-A2, “0:01”) と記述します。
- 第2引数の「”0:01″」は1分を意味します。
- これにより、内部的に「59秒.999…」となっていても、四捨五入の要領で「60秒(1分)」として処理されます。
時間の切り捨て(FLOOR)や切り上げ(CEILING)を行う前段階でこのMROUNDを挟むことで、演算誤差による「予期せぬ切り捨て」を完璧に防ぐことが可能になります。
ADVERTISEMENT
4. 手順③:微小時間を足して「不足分」をカバーする
FLOOR関数やINT関数で「分」を取り出す際に誤差が出る場合は、計算式に「ごくわずかな時間」をプラスする古典的な補正術が有効です。
- 数式の例: =(B2-A2+”0:00:05″)*1440
- 計算結果に5秒程度の微小な値を加算してから切り捨てを行うことで、内部的な数値不足による繰り下げを回避します。
- この方法は、特に関数を使わずに数値をシリアル値から「分(整数)」に変換して管理したい実務現場で重宝されます。
5. 誤差が発生しやすいケースと対策の比較
| 発生シーン | 原因の正体 | 推奨される対策 |
|---|---|---|
| 勤務時間の集計 | 15分単位の切り捨て時に1分減る | TEXT関数による正規化 |
| 時刻の比較判定 | 同じ時刻なのにIF関数で不一致になる | MROUND(“0:01”)で値を固定 |
| シリアル値の変換 | 24時間超の計算で端数が出る | ROUND関数または秒の加算 |
まとめ:時刻計算の「不整合」を論理的に封じ込める
Excelにおける時刻の1分誤差は、画面に表示されている「見かけの数値」と、Excelが裏側で持っている「真の数値」の乖離によって生じます。この乖離を解消するためには、Excel任せにせず、数式の段階で「どの精度までを有効とするか」を明示的に指定してあげることが重要です。
TEXT関数による書式の再適用や、MROUNDによる単位の固定は、一見すると回り道な処理に思えるかもしれません。しかし、これらの一手間を加えることで、給与計算のミスやデータの不整合といった、実務上の重大なリスクを確実に排除できます。コンピュータの数値処理の特性を理解し、誠実な数式設計を行うことで、信頼性の高いワークシートを構築してください。
ADVERTISEMENT
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【Outlook】メールの受信が数分遅れる!リアルタイムで届かない時の同期設定と送受信グループ設定
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Outlook】メール本文が「文字化け」して読めない!エンコード設定の変更と修復手順
- 【Outlook】「メール送信を5分遅らせる」設定!誤送信を防ぐ最強のディレイ機能
- 【Teams】画面が真っ白で起動しない!Windows起動時の自動実行を解除して修復する方法
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Excel】可視セルのみコピー!非表示の行を含めない「Alt+;」の基本操作
- 【Teams】会議の音声が聞こえない!スピーカー設定と音量ミキサーの修正方法
