エクセルで勤務時間や残業時間、休憩時間などを求めるために時間同士の引き算をする際、計算結果がマイナス表記の「#####」というエラーになってしまった経験はないでしょうか。シリアル値(日付や時刻を数値化したデータ)の仕組みを正しく理解し、適切な表示形式の設定や数式を適用することによって、エラーを出さずに正確な労働時間を算出できます。
この記事では、エクセルで時間同士を引き算する基本的な手順に加え、日付をまたぐ計算や24時間を超える場合の表示設定、よくあるエラーの原因と対処法まで詳しく解説します。勤怠管理表やシフト表を日々作成・管理している総務担当者や個人事業主の方は、ぜひ参考にしてください。
エクセルで時間を引き算する基本の手順
エクセルで時間同士を引き算する場合、単純にセル内の数値を減算する操作が基本です。複雑な関数を使わなくても、引き算の記号を用いるだけで簡単に時間差を求められます。
基本的な操作の流れは、以下の通りです。
| 手順 | 操作内容 |
|---|---|
| 1 | 終了時刻と開始時刻を入力する |
| 2 | 終了時刻から開始時刻を引く |
上記の手順に従って入力と計算を行うことによって、労働時間や所要時間をスムーズに算出可能です。関数を使わない単純な引き算のため、Excel初心者でもすぐに実践できます。
セルに終了時刻と開始時刻を入力する
引き算を行う前提として、まずは計算の対象となる時刻データをセルに入力します。エクセルでは、「18:00」のようにコロンを用いて入力した数値は、自動的に時刻データとして認識される仕組みです。
時刻を入力する際のポイントは、以下の通りです。
- 半角数字と半角コロンを使用する
- 24時間表記で入力する
- 文字列ではなく時刻データとして扱う
全角で入力すると文字列として扱われ、計算時にエラーが発生する原因となります。時刻入力時は半角モードになっているかの確認が必要です。
終了時刻から開始時刻を引いて計算する
時刻の入力が完了したら、引き算の数式を作成します。Microsoft Supportでは、時間の減算手順について、次のように説明しています。
セル D2 で、数式 =C2-B2 を入力してから、Enter を押すことによって、開始時刻から終了時刻を減算します。
出典:Microsoft Support 時間を加算または減算する
なお、引用文中の「開始時刻から終了時刻を減算します」という表記は公式ページの原文をそのまま訳したものですが、数式=C2-B2が算出するのは「終了時刻(C2)から開始時刻(B2)を引いた差」です。
このように、引き算を行いたいセルを選択し、数式バーに「=終了時刻のセル-開始時刻のセル」と入力して計算を実行するのが基本です。たとえば開始時刻をB2、終了時刻をC2に入力した場合は、結果を表示したいセルに=C2-B2と入力すれば、そのままコピーしてすぐに使えます。
具体的なセルの関係性と計算式は、次の表にまとめました。
| 項目 | 内容 |
|---|---|
| 終了時刻 | 退勤時間や作業の完了時刻(例: C2) |
| 開始時刻 | 出勤時間や作業の開始時刻(例: B2) |
| 計算式 |
=終了時刻-開始時刻(=C2-B2のように実際のセル番地で入力) |
数式を入力したセルには、2つの時刻の差分が計算結果として表示されます。なお、計算結果がマイナスになる場合は、「#####」というエラーが表示されるため注意が必要です。
エクセルで日付をまたぐ時間を引き算する手順
日付をまたぐ時間計算を単純な引き算で行うと、結果がマイナスになり「#####」エラーが表示されることがあります。このエラーを回避し、正しい時間を算出するためには、目的に応じた手法の選択が効果的です。
日付をまたいで時間を計算する主なアプローチは、以下の通りです。
| 計算手法 | 特徴と適用シーン |
|---|---|
| IF関数 | 終了時刻が開始時刻より小さい場合に1日を加算する手法 |
| シリアル値 | 日付と時刻の両方を入力し、2日以上のまたぎ計算にも対応する手法 |
それぞれの詳しい設定手順について、日付をまたぐ回数や勤務パターンの違いを踏まえながら、順番に解説します。
IF関数を使って計算する
深夜勤務など、終了時刻が開始時刻よりも小さくなる場合は、IF関数を用いて条件分岐を行うのが一般的です。開始時刻よりも終了時刻が小さいかを判定し、該当する場合は24時間(1日)を足す処理を行います。
具体的な数式の書き方と操作手順は、以下の通りです。
- 計算結果を表示したいセルを選択する
- 数式バーに
=IF(終了時刻<開始時刻, 終了時刻+1-開始時刻, 終了時刻-開始時刻)と入力する(開始時刻がB2、終了時刻がC2の場合は=IF(C2<B2, C2+1-B2, C2-B2)と入力します) - Enterキーを押して計算結果を確認する
この数式を設定することによって、深夜0時をまたいだ場合でもエラーを出さずに正しい労働時間を算出できます。ただし、この手法は1日のみ日付をまたぐ場合に有効な仕組みです。
日付を含めたシリアル値で計算する
2日以上またぐ出張や連続作業の時間を計算する場合は、エクセルのシリアル値の仕組みを活用します。あらかじめ日付と時刻を組み合わせた値をセルに入力しておくのが前提です。
日付と時刻を含めて引き算を行う基本的な手順は、以下の通りです。
- 開始時刻のセルに「yyyy/mm/dd h:mm」の形式で日時を入力する
- 終了時刻のセルにも同様の形式で日時を入力する
- 結果を表示するセルに
=終了時刻のセル-開始時刻のセルと入力する(開始時刻をB2、終了時刻をC2に入力した場合は=C2-B2と入力します)
この方法であれば、数日間にわたる時間の計算であっても正確な差分を求められます。計算結果が24時間を超える場合は、セルの表示形式をユーザー定義の[h]:mmに変更して正しく表示させるのがポイントです。
エクセルの引き算で24時間を超える場合の表示設定
エクセルで引き算をした結果が24時間を超えると、「0:00」のようにリセットされて表示されてしまいます。これは、エクセルが時間を24時間周期のシリアル値として認識しているためです。
正しい合計時間を表示するための設定手順は、以下の通りです。
| 手順 | 操作内容 |
|---|---|
| 手順1 | セルのユーザー定義の表示形式を開く |
| 手順2 | 「[h]:mm」と入力して適用する |
それぞれの操作手順について、書式設定画面の呼び出し方から入力内容まで、実際の画面操作の流れに沿って詳しく解説します。
セルのユーザー定義の表示形式を開く
まず、計算結果を表示したいセルを選択し、書式設定の画面を呼び出します。複数のセルに同じ設定を適用したい場合は、対象範囲をすべて選択した状態で操作を始めると効率的です。
具体的な画面の開き方は、以下の通りです。
- 計算結果を表示する対象のセルを選択する
- 右クリックメニューから「セルの書式設定」を選ぶ
- 「表示形式」タブの分類から「ユーザー定義」をクリックする
キーボードの「Ctrl」キーと「1」キーを同時に押すことによって、書式設定の画面を素早く開けます。マウス操作を省けるため、日常的にエクセルを使う方に便利なショートカットです。
「[h]:mm」と入力して適用する
ユーザー定義の画面が開いたら、専用の書式を入力して設定を完了させます。時間を示す「h」を角括弧で囲むのが、24時間以上を表示させるためのポイントです。
入力と適用の手順は、以下の通りです。
- 「種類」の入力欄に入力されている文字を消す
- 半角英数字で「[h]:mm」と入力する
- 「OK」ボタンをクリックして設定画面を閉じる
この設定により、24時間を超えた時間も「0:00」にリセットされずにそのまま表示されます。勤怠管理表などで合計の労働時間を正確に算出したい場面で、不可欠な設定です。
表示形式を変更してもセルの内部に保持されているシリアル値自体は変わらないため、そのまま別の計算に流用できます。
エクセルの時間の引き算に関するよくある質問
時間の引き算結果が「#####」になるのはなぜですか?
計算結果がマイナスになっていることが主な原因です。エクセルの標準設定では、マイナスの時間を表示できません。
解決するには、IF関数を使って日付またぎの計算式に修正するか、開始・終了時刻に日付を含めたシリアル値で入力し直す方法が安全です。「1904年から計算する」設定はブック全体の日付システムを切り替えて既存の日時データにも影響するため、通常の勤怠計算では避けてください。
休憩時間を分単位の数値で入力して引き算できますか?
分単位の数値をそのまま引き算すると、正しく計算されません。エクセルでは1日を「1」とするシリアル値で時間を管理しているからです。
数値を1440(24時間×60分)で割ることで時間データに変換され、開始時刻・終了時刻と同じ形式で正しく引き算できます。
時間と時給を掛け算して給与を計算できますか?
時間データにそのまま時給を掛けても、正しい金額は算出されません。時間データに24を掛けて、一般的な数値に変換する処理が必須です。
たとえば「8:00」に24を掛けると数値の「8」になるため、そこに時給を掛けることで正確な給与を計算できます。
ITやプログラミングに関するコラム
【Python】FastAPIで料金プラン見積もりシミュレーターを作ってみた
【Python】pandasとmatplotlibで在庫データのABC分析と構成比を可視化してみた
【Python】Flaskで社内FAQをカテゴリ検索できるWebアプリを作ってみた
【Python】argparseでJSON整形・構文検証・キー検索CLIを試してみた
【Python】NumPyとmatplotlibでモンテカルロ法による円周率推定と収束過程の可視化を試してみた
【Python】Playwrightでスクレイピングを試してみた
【CSS】notで複数の件を除外する方法
【Git】remote設定を変更する方法
【VBA】コメントアウトを設定する方法
x86とx64の違いを分かりやすく解説
ITやプログラミングに関するニュース
VercelがAI GatewayにSeedream 5.0 Proを追加、AI SDKのモデル指定で画像生成と編集が可能に
AWSがAmazon LocationのPlaces APIを強化、住所表記の指定と移動手段別の検索が可能に
VercelがトレースにTree・Waterfallビューを追加、ログ画面で処理の階層と所要時間を確認可能に
Googleがエージェント評価の再考を提唱、難易度を情報量で測るDiscovery Benchを解説
Google CloudがCloud Runサンドボックスを公開プレビューで提供、サービスヘルスは一般提供に
Google Cloud EMEAが英国金融の重要第三者に指定、イングランド銀行・PRA・FCAの直接監督下に
AWS DMS Schema ConversionがSQL Serverのオフライン変換に対応、ソースDBへ接続せずスキーマを変換可能に
EC2 G7インスタンスが米国東部(バージニア北部)で利用可能に、G6比でAI推論性能が最大4.6倍
SageMaker HyperPodが継続プロビジョニングでのAMIベース構成に対応、S3のスクリプト管理なしでSlurmクラスターを作成可能に
AWSがEMR on EKSでSparkトラブルシューティングエージェントに対応、失敗ジョブの原因分析を自然言語で依頼可能に
