Excel で深夜をまたいだ時刻間の経過時間は、どのように計算すればよいでしょうか?
Excel で勤務スケジュールを管理していると、ある日の深夜に始まり翌日未明に終わるような勤務時間を追跡する必要が生じることがあります。たとえば、A 列に当日の開始時刻、B 列に翌日の深夜を過ぎた終了時刻が記録されているとします。「=B2-A2」のような単純な減算式で時差を計算しようとすると、下のスクリーンショットのようにExcel は誤った値やマイナスの値を表示します。これは、Excel の時刻計算が真夜中でリセットされるため、日付をまたぐ期間に対して直接減算を行うと正しい結果が得られないからです。では、Excel で終了時刻が深夜を過ぎる場合、2 つの時刻間の正確な勤務時間はどのように計算すればよいでしょうか?
深夜をまたいだ時刻間の経過時間を VBA コードで計算する(高度な自動化)
深夜をまたいだ時刻間の経過時間を数式で計算する
終了時刻が深夜を過ぎる2 つの時刻間の正確な経過時間を取得するには、2 日間にわたる時差を考慮したシンプルな数式が使えます。この方法は、小規模から中規模のデータセットや、単に深夜をまたぐ時間帯を処理したい場合に効率的です。
動作の仕組み:数式「=(B2-A2+(B2<A2))*24」は、終了時刻(B2)が開始時刻(A2)より早い場合に1 日分(Excel では時刻が24 時間の分数として保存されるため)を加算し、常に正の経過時間が得られるようにします。
1。時刻データの隣にある空セル(例:C2)に、次の数式を入力してください:
=(B2-A2+(B2<A2))*24 説明:ここでは、A2に開始時刻、B2に(深夜を跨ぐ)終了時刻が入力されています。データのレイアウトに応じて、セル参照を適宜調整してください。

2。数式を入力して Enter キーを押すと、フィルハンドルをドラッグして他の該当行に数式を適用できます。Excel は即座に、深夜をまたぐ時差を計算します。

ヒント:
- すべての時刻セルが時刻形式になっていることをご確認ください(右クリック > セルの書式設定 > 時刻)。
- この数式は、時間を小数で出力します。結果を「時:分」形式で表示したい場合は、
TEXT関数を使った書式設定が便利です。例:=TEXT(B2-A2+(B2<A2),"h:mm")ただし、給与計算やレポート作成などで小数による時間表記が必要な場合は、元の数式が最適です。 - データに無効な時刻エントリが含まれている場合は、Excel が時刻として認識できないタイポや値がないかご確認ください。
一般的なエラー:
- #VALUE!エラーが表示された場合は、両方の列にテキストではなく有効な時刻値が正しく入力されているか、再度ご確認ください。
- マイナスまたは予期しない結果が表示される場合は、通常、数式の参照がずれているか、時刻が正しく入力されていないことを示しています。
概要:このソリューションは、標準的なシフトスケジュールやシンプルな深夜勤務の管理に最適です。データが単純な2 列構成で、さらに複雑なビジネスロジックを必要としない場合に特に実用的です。
深夜をまたいだ時刻間の経過時間を VBA コードで計算する(高度な自動化)
大量のタイムログデータを処理する必要がある場合や、カスタムの丸めルール、除外条件、可変的な休憩時間など、複雑なシナリオで経過時間を自動計算したい場合は、VBA マクロを利用することで作業時間を大幅に短縮し、手動入力によるエラーを軽減できます。この方法は上級ユーザー向けであり、変動するシフトパターン、特殊な切り替えポイント、バッチ処理の要件に対応する際に特に適しています。
適用可能なシナリオ:次のような場合は、このソリューションを選択してください:
- 数百行から数千行を定期的に処理する必要がある
- 単純な日付をまたぐ処理を超えるロジックが必要な場合(例:可変的な残業ルール、昼休憩控除など)
- 手動入力を最小限に抑え、自動で再計算されるソリューションを好む
デメリット:ユーザーはマクロの有効化に慣れている必要があり、ブックを受け取った相手も VBA を許可したり、マクロのセキュリティ設定を調整したりする必要があります。
1。Excel ワークブックを開き、Alt + F11を押してVisual Basic for Applications (VBA)エディタを起動します。VBA インターフェースで、挿入 > 標準モジュールをクリックして新しいモジュールを作成し、以下のコードをコードウィンドウに貼り付けます:
Sub CalculateHoursAcrossMidnight()
Dim rng As Range
Dim cell As Range
Dim startTime As Date
Dim endTime As Date
Dim resultCol As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set rng = Application.Selection
Set rng = Application.InputBox("Select the range containing start and end times (two columns)", xTitleId, rng.Address, Type:=8)
If rng Is Nothing Then Exit Sub
resultCol = rng.Columns(rng.Columns.Count).Column + 1
For Each cell In rng.Columns(1).Cells
startTime = cell.Value
endTime = cell.Offset(0, 1).Value
If IsDate(startTime) And IsDate(endTime) Then
If endTime < startTime Then
cell.Offset(0, 2).Value = (endTime - startTime + 1) * 24
Else
cell.Offset(0, 2).Value = (endTime - startTime) * 24
End If
Else
cell.Offset(0, 2).Value = "Invalid Time"
End If
Next cell
MsgBox "Calculation complete! Hours between times after midnight are now in the next column.", vbInformation, xTitleId
End Sub 2。マクロを実行するには、VBA エディタを閉じてExcel に戻り、ワークシート上で開始時刻列と終了時刻列の両方を含む範囲を選択してください。その後、F5 キーを押すか、実行ボタンをクリックします。
マクロは、開始時刻と終了時刻の両方を含み、かつ隣接した範囲の選択を促します。深夜をまたぐ場合も正しく補正された経過時間が、データ範囲の直後の列に出力されます。
ヒントとトラブルシューティング:
- 開始時刻列と終了時刻列の両方には、有効な日付/時刻値が含まれている必要があります。Excel が認識できない形式のセルは、「無効な時刻」としてフラグが立てられます。
- このマクロを他のシートで再利用・カスタマイズするには、選択範囲を変更するか、必要に応じて列のオフセットを調整してください。
- マクロが表示されない、または実行できない場合は、Excel のセキュリティ設定でマクロを有効にしてください(ファイル > オプション > トラストセンター > マクロの設定)。
- この方法はカスタムのビジネスルールにも対応可能です。必要に応じて、VBA コードに休憩時間の処理、時刻の丸め、残業計算などの追加ロジックを簡単に組み込めます。
概要:この自動化された VBA 方式は、大規模な勤務表の管理や繰り返し計算が必要な方、あるいは組織独自のタイムマネジメントロジックを実装したい方に特に役立ちます。一度設定すれば、手作業による繰り返し作業が不要になり、深夜勤務の計算ミスリスクも最小限に抑えられます。

KUTOOLS AI でExcel の魔法を解き放ちましょう
- スマート実行:セル操作、データ分析、チャート作成をすべてシンプルなコマンドで実現します。
- カスタム数式:ワークフローの効率化に役立つ、あなただけのカスタマイズ数式を生成します。
- VBA コーディング:VBA コードを簡単に記述・実装できます。
- 数式の解釈:複雑な数式が簡単に理解できます。
- テキスト翻訳:スプレッドシート内で言語の壁を乗り越えましょう!
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得