Excel時刻を秒・分に変換する5つのテクニック|TIMEVALUE・シリアル値×86400・VBA
Excelで「1:30:00」という時刻データを秒数(5400秒)や分数(90分)の整数値に変換したいと思ったことはありませんか?勤怠管理の集計、製造現場での作業時間分析、タイムスタンプの比較など、実務では時刻をそのまま扱うより数値に変換した方が計算しやすい場面が多くあります。
本記事では、Excel 時間 秒 変換に使える5つのテクニックを、TIMEVALUE関数・HOUR/MINUTE/SECOND関数・シリアル値×86400の計算式・VBAまで体系的に解説します。計算式はそのままコピーして使える形式で掲載しています。
本記事は「時刻データ(h:mm:ss)→ 秒・分の数値」への変換を扱います。逆に「秒や分で表された数値 → Excelのシリアル値(時刻)」への変換については、以下の記事をご覧ください。

- Excelのシリアル値と時刻データの関係(基礎)
- TIMEVALUE関数で文字列時刻をシリアル値に変換する方法
- HOUR・MINUTE・SECOND関数を組み合わせて秒変換する計算式
- シリアル値×86400で最短の秒変換を行う方法
- 24時間超の合計時間を正しく表示するユーザー定義書式
- VBAマクロで時刻列を一括変換する実装例
- 勤怠管理・製造現場での実務活用シナリオ
Excelの時刻データとシリアル値の基礎知識
時刻変換の計算式を正しく使うには、Excelが内部でどのように時刻を管理しているかを理解することが重要です。
シリアル値とは何か(1日=1、1秒=1/86400)
Excelはすべての日付・時刻を「シリアル値」と呼ばれる小数で管理しています。基準は次のとおりです。
| 単位 | シリアル値 | 計算式 |
|---|---|---|
| 1日(24時間) | 1.0 | — |
| 1時間 | 0.041666… | 1 ÷ 24 |
| 1分 | 0.000694… | 1 ÷ 1440 |
| 1秒 | 0.000011574… | 1 ÷ 86400 |
つまり、12:00:00(正午)はシリアル値で0.5、1:30:00は0.0625として保持されています。この仕組みを理解すると、なぜ「×86400」で秒に変換できるのかが自然に分かります。
時刻表示形式(h:mm:ss)と数値の違い
Excelのセルで「1:30:00」と表示されていても、それは表示形式の問題であり、セルの実際の値はシリアル値(0.0625)です。「表示形式を変えること」と「数値を変換すること」は別の操作であることに注意してください。
- 表示形式変更: 見た目だけ変わる。セルの値(シリアル値)はそのまま
- 数値変換: 計算式で数値を変換し、別のセルに秒数・分数として出力する
本記事では後者、つまり計算で数値を変換する方法を解説します。
LINEでExcelを気軽に学べる
テクニック1|TIMEVALUE関数で文字列時刻をシリアル値に変換する
ポイント: テキスト(文字列)として入力された時刻データをシリアル値に変換できます。CSVインポートデータやシステム出力データの処理に最適です。
構文と引数
=TIMEVALUE(時刻文字列)| 引数 | 説明 |
|---|---|
| 時刻文字列 | "1:20:30" のように引用符で囲んだ文字列、またはテキスト形式のセル参照 |
使用例:「1:20:30」をシリアル値・秒数に変換
| セル | 内容 | 数式 | 結果 |
|---|---|---|---|
| A1 | 1:20:30(文字列) | — | — |
| B1 | シリアル値に変換 | =TIMEVALUE(A1) | 0.055902… |
| C1 | 秒数に変換 | =TIMEVALUE(A1)*86400 | 4830 |
| D1 | 分数に変換 | =TIMEVALUE(A1)*1440 | 80.5 |
注意点:数値として計算するには×86400が必要
TIMEVALUE関数の戻り値はシリアル値(0〜1の小数)です。このままでは秒数として使えないため、秒変換には×86400、分変換には×1440、時間変換には×24 を掛けます。
また、TIMEVALUE関数は数値型の時刻(セルの書式が「時刻」になっているもの)には使用できません。数値型の時刻には、後述のテクニック2または3を使います。
テクニック2|HOUR・MINUTE・SECOND関数の組み合わせで秒変換する
ポイント: 最も直感的で理解しやすい方法です。時・分・秒をそれぞれ取り出して整数変換するため、計算式の意味が一目でわかります。
各関数の役割と構文
| 関数 | 構文 | 取り出す値 | 戻り値の範囲 |
|---|---|---|---|
| HOUR | =HOUR(シリアル値) | 時の部分 | 0〜23 |
| MINUTE | =MINUTE(シリアル値) | 分の部分 | 0〜59 |
| SECOND | =SECOND(シリアル値) | 秒の部分 | 0〜59 |
計算式:秒数に変換する
=HOUR(A1)*3600 + MINUTE(A1)*60 + SECOND(A1)仕組みの解説:
HOUR(A1)*3600:時を秒に換算(1時間=3600秒)MINUTE(A1)*60:分を秒に換算(1分=60秒)SECOND(A1):秒はそのまま加算
分数に変換する場合:
=HOUR(A1)*60 + MINUTE(A1) + SECOND(A1)/60活用例:複数行の時刻を一括で秒変換する
勤怠管理表のB列(B2:B100)に出退勤の差分時刻が入力されている場合、C列に次の数式を入力して下方向にコピーすれば一括変換できます。
=HOUR(B2)*3600 + MINUTE(B2)*60 + SECOND(B2)SUM(C2:C100) でその合計秒数を求め、さらに÷3600すれば合計労働時間(時間単位)を求めることもできます。
テクニック3|シリアル値×86400で高速に秒変換する
ポイント: 最もシンプルな計算式です。HOUR/MINUTE/SECOND関数を使わず、シリアル値に直接86400を掛けるだけで秒数が得られます。大量データの処理でも動作が軽快です。
計算式:時刻のみのセル(日付なし)の場合
セルに日付情報が含まれず、純粋に時刻だけが入力されている場合は次の式で変換できます。
=A1 * 86400結果は小数になることがあります。整数の秒数のみ必要な場合は INT() で切り捨てます。
=INT(A1 * 86400)計算式:日付込みセル(日時データ)の場合
2026/01/15 9:30:00 のように日付と時刻が一体になったセルから、時刻部分だけを秒に変換するには INT() で日付(整数部)を除去します。
=(A1 - INT(A1)) * 86400分変換・時間変換への応用
同じ考え方で、分や時間への変換も可能です。
| 変換先 | 計算式 | 掛け数の理由 |
|---|---|---|
| 秒数 | =A1 * 86400 | 1日=86400秒 |
| 分数 | =A1 * 1440 | 1日=1440分 |
| 時間数 | =A1 * 24 | 1日=24時間 |
LINEでExcelを気軽に学べる
テクニック4|表示形式「[h]:mm」で24時間超の合計を正しく表示する
ポイント: 時刻の合計が24時間を超えると、Excelは通常の時刻書式では正しく表示できません。この問題を解決する表示形式の設定方法を解説します。
なぜ24時間超で表示がずれるのか
Excelの標準時刻書式 h:mm は、24時間を超えると0時間に戻ってしまう仕様です。例えば、合計が25:30:00(シリアル値1.0625)の場合、h:mm書式では1:30(25時間ではなく1時間30分)と表示されます。
ユーザー定義書式の設定手順
- 合計値を表示するセルを選択
Ctrl + 1でセルの書式設定を開く- 「表示形式」タブ →「ユーザー定義」を選択
- 種類の入力欄に次の書式を入力してOK
| 用途 | 入力する書式 |
|---|---|
| 時間・分の表示 | [h]:mm |
| 時間・分・秒の表示 | [h]:mm:ss |
h を [h] と角括弧で囲むことで、24時間を超えた値もそのまま表示されます。
SUM関数との組み合わせ実例
勤怠管理で1週間分の労働時間(B2:B8)を合計する場合:
=SUM(B2:B8)この合計セルに [h]:mm 書式を設定すれば、43:30(43時間30分)のように正しく表示されます。
テクニック5|VBAのTimeValue関数で時刻変換を自動化する
ポイント: 大量のデータを繰り返し変換する業務や、毎月定期的に実行する処理はVBAマクロで自動化すると大幅に工数を削減できます。
VBAコードの基本構文
VBAでは TimeValue() 関数で文字列をシリアル値に変換し、*86400 で秒数に変換できます。
' 文字列 "1:30:00" を秒数(5400)に変換する基本例
Dim strTime As String
Dim dblSeconds As Double
strTime = "1:30:00"
dblSeconds = TimeValue(strTime) * 86400
MsgBox "秒数: " & dblSeconds ' → 5400 と表示実装例:シートの時刻列を一括で秒変換するマクロ
A列に時刻データ(A2から下方向)が入力されているシートで、B列に対応する秒数を出力するマクロです。
Sub ConvertTimeToSeconds()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim cellValue As Variant
Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を適宜変更
' データ最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' ヘッダー行のラベル設定
ws.Cells(1, "B").Value = "秒数"
' A列の時刻をB列に秒単位で出力
For i = 2 To lastRow
cellValue = ws.Cells(i, "A").Value
' セルが空の場合はスキップ
If cellValue = "" Then GoTo NextRow
' 数値型シリアル値の場合
If IsNumeric(cellValue) And Not IsEmpty(cellValue) Then
ws.Cells(i, "B").Value = CLng(cellValue * 86400)
' 文字列型時刻の場合
ElseIf IsDate(cellValue) Then
ws.Cells(i, "B").Value = CLng(TimeValue(CStr(cellValue)) * 86400)
End If
NextRow:
Next i
MsgBox "変換完了しました。(" & lastRow - 1 & "件)"
End Sub実行方法と注意事項
実行方法:
Alt + F11でVBAエディタを開く- 「挿入」→「標準モジュール」でモジュールを追加
- 上記コードを貼り付けて保存
Alt + F8→「ConvertTimeToSeconds」を選択して実行
注意事項:
- マクロを含むファイルは
.xlsm(マクロ有効ブック)で保存が必要です CLng()で結果を整数に丸めています。小数秒が必要な場合はCDbl()に変更してください- シート名「Sheet1」は実際のシート名に合わせて変更してください
実務での活用シナリオ
ここでは、時刻変換が実際の業務でどのように役立つかを具体的なケースで解説します。
勤怠管理:出退勤時刻から労働時間を秒単位で集計
課題: 出勤時刻(C列)・退勤時刻(D列)から実労働秒数を計算し、残業時間の管理や給与計算に活用したい。
設計例:
| 列 | 内容 | 数式例 |
|---|---|---|
| C列 | 出勤時刻 | 9:00:00 |
| D列 | 退勤時刻 | 18:30:00 |
| E列 | 経過時刻(差分) | =D2-C2 |
| F列 | 経過秒数 | =(D2-C2)*86400 |
| G列 | 経過分数 | =(D2-C2)*1440 |
E列に[h]:mm書式を設定すれば、残業で24時間を超える累計にも対応できます。F列・G列は給与システムへのデータ連携や、集計レポートへの数値入力に活用できます。

COUNTIFS関数で勤怠データを集計する方法も合わせて確認してみてください。

製造現場:作業時間の秒単位での工程分析
課題: 各工程の作業時間(mm:ss形式)を記録し、ボトルネック工程を特定するため秒単位で比較・集計したい。
設計例:
| 工程 | 記録時刻 | 秒数換算 | 目標秒数 | 差異(秒) |
|---|---|---|---|---|
| 工程A | 0:02:15 | 135 | 120 | +15 |
| 工程B | 0:01:48 | 108 | 120 | -12 |
| 工程C | 0:03:05 | 185 | 150 | +35 |
秒数に変換することで、工程間の比較・平均値計算・統計分析(AVERAGE・STDEV関数)が数値として扱えるようになり、改善効果の定量評価が容易になります。
VBAマクロの実行結果をデモで確認
上記のVBAマクロがどのように動作するか、下のインタラクティブデモで確認できます。
Sub ConvertTimeToSeconds()
Dim ws As Worksheet
Dim lastRow As Long, i As Long
Set ws = ThisWorkbook.Sheets(“Sheet1”)
lastRow = ws.Cells(ws.Rows.Count, “B”).End(xlUp).Row
For i = 2 To lastRow
ws.Cells(i, “D”).Value = _
ws.Cells(i, “C”) – ws.Cells(i, “B”)
Next i
MsgBox “変換完了しました。(“ & lastRow – 1 & “件)”
End Sub
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 作業内容 | 開始時刻 | 終了時刻 | 作業時間 |
| 2 | データ入力 | 9:00 | 10:30 | 1:30 |
| 3 | 会議 | 11:00 | 12:15 | 1:15 |
| 4 | 資料作成 | 13:00 | 15:45 | 2:45 |
| 5 | メール対応 | 16:00 | 17:00 | 1:00 |
☝ 実務では数百行の勤怠データもVBAマクロで一括処理できます
まとめ:用途別テクニック選択ガイド
本記事で紹介した5つのテクニックを、用途・状況に応じて選択するための比較表です。
| テクニック | 最適な使用場面 | 難易度 | 備考 |
|---|---|---|---|
| TIMEVALUE関数 | CSVや外部システムから取り込んだ文字列時刻の変換 | 初級 | 数値型時刻には使用不可 |
| HOUR/MINUTE/SECOND関数 | 計算式の意図を明確にしたい・教育目的 | 初級 | 最も直感的で分かりやすい |
| シリアル値×86400 | 大量データの高速処理・シンプルな計算 | 初級 | 日付込みの場合は-INT(A1)が必要 |
| [h]:mm書式 | 24時間超の合計時間を正しく表示したい | 初級 | 数値変換ではなく表示形式の変更 |
| VBA TimeValue | 毎月定期的な一括処理・自動化 | 中級 | .xlsmで保存が必要 |
関連記事



LINEでExcelを気軽に学べる
よくある質問(FAQ)
ExcelでTIMEVALUE関数を使っても#VALUE!エラーが出ます。どうすればいいですか?
#VALUE!エラーは、TIMEVALUE関数に渡した値が文字列ではなく、数値型(シリアル値)の時刻データである場合に発生します。セルを選択して数式バーで確認し、左寄せ表示なら文字列、右寄せ表示なら数値型です。数値型の時刻には、代わりに=A1*86400または=HOUR(A1)*3600+MINUTE(A1)*60+SECOND(A1)を使用してください。
時刻の合計をSUM関数で計算すると25時間以上あるのに「1:00」と表示されます。なぜですか?
Excelの標準時刻書式「h:mm」は24時間を超えると0時間にリセットされるため、25時間は「1:00」と表示されます。解決するには、合計セルの書式設定を「ユーザー定義」で「[h]:mm」(角括弧付き)に変更してください。これにより25時間以上の合計も正しく「25:00」などと表示されます。
「=A1*86400」で変換したら小数点以下が出てしまいました。整数の秒数にするには?
秒の小数点以下を切り捨てて整数にするには=INT(A1*86400)を使います。四捨五入したい場合は=ROUND(A1*86400,0)、切り上げは=CEILING(A1*86400,1)を使用してください。実務の勤怠計算では通常「INT(切り捨て)」が使われます。
VBAマクロを実行しようとしたらエラーが出ます。原因は何ですか?
主な原因は(1)ファイルが.xlsx形式で保存されている(.xlsmに変更が必要)、(2)シート名「Sheet1」が実際のシート名と異なる、(3)A列のデータがExcelに時刻と認識されない形式になっている、の3つです。エラーメッセージと行番号を確認し、該当箇所のシート名やデータ形式を見直してください。
HOUR関数・MINUTE関数・SECOND関数とTIMEVALUE関数はどう使い分ければいいですか?
TIMEVALUE関数は「文字列として保存された時刻(例:CSVから取り込んだテキスト)」を数値に変換する際に使います。一方、HOUR・MINUTE・SECOND関数はExcelが時刻として認識している数値型データに使います。データの種類が不明な場合はISNUMBER(A1)で確認し、TRUEなら数値型のため×86400方式かHOUR/MINUTE/SECOND関数を、FALSEなら文字列のためTIMEVALUE関数を選択してください。
