HOUR・MINUTE・SECOND関数の使い方|時刻の時分秒を抽出
HOUR関数・MINUTE関数・SECOND関数は、時刻データから時・分・秒の数値をそれぞれ取り出すExcelの関数です。勤務時間の集計、時間帯別のデータ分析、タイムスタンプの処理など、時刻を分解して扱う場面で欠かせません。日付関数のYEAR・MONTH・DAYと対になる関数です。
各関数の基本構文
HOUR関数
=HOUR(シリアル値)
時刻から「時」を0~23の数値で返します。
MINUTE関数
=MINUTE(シリアル値)
時刻から「分」を0~59の数値で返します。
SECOND関数
=SECOND(シリアル値)
時刻から「秒」を0~59の数値で返します。
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| シリアル値 | 時・分・秒を取り出す対象の時刻データ | 必須 |
基本的な使い方
セルA2に「14:35:20」が入力されている場合の動作です。
| 数式 | 結果 | 説明 |
|---|---|---|
| =HOUR(A2) | 14 | 時を返す |
| =MINUTE(A2) | 35 | 分を返す |
| =SECOND(A2) | 20 | 秒を返す |
日付と時刻の両方を含むデータ
「2026/04/01 14:35:20」のように日付と時刻が結合されたデータでも、時刻部分を正しく取り出せます。
=HOUR("2026/04/01 14:35:20") ' 結果:14
=MINUTE("2026/04/01 14:35:20") ' 結果:35
NOW関数との組み合わせ
現在の時刻情報を取得する場合に使います。
=HOUR(NOW()) ' 現在の「時」
=MINUTE(NOW()) ' 現在の「分」
=SECOND(NOW()) ' 現在の「秒」
Excelの時刻とシリアル値の仕組み
Excelは時刻を0~1の小数値で管理しています。0が0:00:00(午前0時)、0.5が12:00:00(正午)、1が24:00:00です。
| 時刻 | シリアル値 |
|---|---|
| 0:00:00 | 0 |
| 6:00:00 | 0.25 |
| 12:00:00 | 0.5 |
| 18:00:00 | 0.75 |
| 24:00:00 | 1 |
時刻を数値(時間数)に変換する
時刻データを時間数(小数)に変換するには、24を掛けます。
=A2 * 24
A2が「8:30」なら8.5(時間)になります。HOUR関数とMINUTE関数で書くと次のとおりです。
=HOUR(A2) + MINUTE(A2)/60 + SECOND(A2)/3600
実践例1:勤務時間の計算
出勤時刻と退勤時刻から勤務時間を計算する例です。
サンプルデータ
| A列(社員名) | B列(出勤) | C列(退勤) | D列(休憩) |
|---|---|---|---|
| 山田太郎 | 9:00 | 18:00 | 1:00 |
| 鈴木花子 | 8:30 | 17:30 | 1:00 |
| 佐藤一郎 | 10:00 | 19:30 | 1:00 |
実労働時間の計算
退勤時刻から出勤時刻を引き、休憩時間を差し引きます。
=C2 - B2 - D2
結果は時刻形式で表示されます。山田太郎の場合は「8:00」です。
時間数での表示
時間数(小数)で表示するには24を掛けます。
=(C2 - B2 - D2) * 24
山田太郎の場合は8(時間)が返ります。
残業時間の計算
所定労働時間(8時間)を超えた分を残業時間として計算します。
=MAX((C2 - B2 - D2) * 24 - 8, 0)
MAX関数で負の値(残業なし)を0にしています。佐藤一郎の場合は0.5(30分の残業)です。
実践例2:時間帯別の集計
売上データやアクセスログを時間帯ごとに集計する例です。
売上データのサンプル
| A列(日時) | B列(売上) |
|---|---|
| 2026/04/01 9:15 | 3,200 |
| 2026/04/01 11:40 | 5,800 |
| 2026/04/01 13:05 | 4,100 |
| 2026/04/01 15:30 | 6,500 |
| 2026/04/01 17:45 | 2,900 |
午前・午後の集計
HOUR関数で時間帯を判定し、午前と午後に分けて集計します。
=SUMPRODUCT((HOUR(A2:A6)<12)*B2:B6) ' 午前の合計
=SUMPRODUCT((HOUR(A2:A6)>=12)*B2:B6) ' 午後の合計
3時間ごとの時間帯別集計
=SUMPRODUCT((HOUR(A2:A6)>=9)*(HOUR(A2:A6)<12)*B2:B6) ' 9-12時
=SUMPRODUCT((HOUR(A2:A6)>=12)*(HOUR(A2:A6)<15)*B2:B6) ' 12-15時
=SUMPRODUCT((HOUR(A2:A6)>=15)*(HOUR(A2:A6)<18)*B2:B6) ' 15-18時
時間帯のラベルを自動付与
各データに時間帯のラベルを付けるには、INT関数と組み合わせます。
=INT(HOUR(A2)/3)*3 & "時~" & INT(HOUR(A2)/3)*3+3 & "時"
結果は「9時~12時」「15時~18時」のような文字列です。
実践例3:深夜勤務の時間計算
日をまたぐ勤務(夜勤)の場合は、退勤時刻が出勤時刻より小さくなります。
日またぎの判定
=IF(C2 < B2, C2 + 1 - B2 - D2, C2 - B2 - D2)
退勤時刻(C2)が出勤時刻(B2)より小さい場合は、退勤時刻に1(24時間)を加算してから計算します。
深夜時間帯(22時~翌5時)の計算
深夜割増の対象となる時間を算出する例です。
=MAX(MIN(C2+IF(C2<B2,1,0), 5/24) - MAX(B2, 22/24), 0) * 24
この数式は22:00~翌5:00の範囲内にある勤務時間を時間数で返します。22/24と5/24は、それぞれ22:00と5:00のシリアル値です。
実践例4:時刻の丸め処理
勤怠管理では、打刻時刻を15分単位や30分単位で丸める処理が必要な場合があります。
15分単位で切り捨て
=FLOOR(A2, "0:15")
9:07の打刻が9:00に、9:18の打刻が9:15に切り捨てられます。
15分単位で切り上げ
=CEILING(A2, "0:15")
9:07の打刻が9:15に、9:18の打刻が9:30に切り上げられます。
HOUR・MINUTE関数を使った丸め
FLOOR関数やCEILING関数を使わずに、HOUR関数とMINUTE関数で丸め処理を行う方法です。
=TIME(HOUR(A2), INT(MINUTE(A2)/15)*15, 0)
15分単位で切り捨てた時刻をTIME関数で組み立てています。
実践例5:経過時間の表示
開始時刻からの経過時間を「○時間○分」の形式で表示する例です。
数式
=HOUR(C2-B2) & "時間" & MINUTE(C2-B2) & "分"
B2が「9:00」、C2が「17:30」の場合、「8時間30分」が返ります。
24時間を超える場合の注意
HOUR関数は0~23の値しか返しません。24時間を超える時間差を扱う場合は、次のように計算します。
=INT((C2-B2)*24) & "時間" & MINUTE(C2-B2) & "分"
シリアル値に24を掛けてINT関数で時間部分を取り出すことで、24時間を超える値にも対応できます。
よくあるエラーと対処法
#VALUE!エラー
時刻として認識できない値を指定した場合に発生します。
' エラーになる例
=HOUR("時刻なし")
IFERROR関数でエラーを処理できます。
=IFERROR(HOUR(A2), "")
時間の合計が24時間を超えると正しく表示されない
時刻の合計が24時間を超える場合、既定の表示形式では正しく表示されません。セルの書式設定で表示形式を「[h]:mm」に変更してください。角括弧を付けることで24時間を超えた合計が表示されます。
時刻が小数で表示される
セルの書式が「標準」の場合、時刻は小数値で表示されます。書式設定を「時刻」に変更するか、「h:mm」の表示形式を指定してください。
TIME関数との組み合わせ
HOUR・MINUTE・SECOND関数で分解した時刻を再構築するにはTIME関数を使います。
=TIME(HOUR(A2), MINUTE(A2), SECOND(A2))
この組み合わせは、秒を切り捨てて時分のみの時刻に変換する場合などに使います。
=TIME(HOUR(A2), MINUTE(A2), 0) ' 秒を切り捨て
Google スプレッドシートでの互換性
HOUR関数・MINUTE関数・SECOND関数はGoogle スプレッドシートでも同じ構文・同じ動作で利用可能です。時刻のシリアル値の扱いも同一です。
まとめ
HOUR・MINUTE・SECOND関数は時刻から時・分・秒を個別に取り出す基本関数です。
- HOUR関数は時(0~23)、MINUTE関数は分(0~59)、SECOND関数は秒(0~59)を返す
- 勤務時間の計算では出退勤時刻の差から休憩時間を引いて求める
- 時間帯別の集計にはHOUR関数とSUMPRODUCT関数の組み合わせが有効
- 日をまたぐ勤務は退勤時刻に1を加算して計算する
- 打刻の丸め処理にはFLOOR関数やCEILING関数と組み合わせると便利
勤怠管理、時間帯分析、タイムスタンプ処理など、時刻データを扱う場面でこれらの関数は欠かせません。TIME関数と合わせて使いこなしましょう。