「時・分・秒がバラバラのセルに入っているけど、1つの時刻にまとめたい」と思ったことはありませんか。手入力で時刻を打ち直すのは手間ですし、ミスのもとにもなりますよね。
ExcelのTIME関数を使えば、時・分・秒の数値を指定するだけで正しい時刻を作成できます。この記事では基本の書き方から、勤務時間の計算や時刻の丸め処理といった実務パターンまでまとめて紹介します。
この記事は次のような人におすすめ
– 時・分・秒が別セルに分かれたデータを時刻にまとめたい
– 勤務時間の開始・終了時刻を数式で自動設定したい
– TIME関数とTIMEVALUE関数・HOUR関数の違いを整理したい
TIME関数とは?
TIME関数(読み方: タイム)は、時・分・秒の3つの数値を指定して時刻のシリアル値を返す関数です。英語の「time(時刻)」がそのまま関数名になっています。
Excelでは時刻を内部的に「シリアル値」という小数で管理しています。1日を「1」として、時刻を0から1未満の小数で表す仕組みです。たとえば12:00(正午)のシリアル値は「0.5」、6:00は「0.25」です。
TIME関数が返すのもこのシリアル値ですが、セルの表示形式が自動的に「時刻」に切り替わるため、見た目は 10:30:00 のように表示されます。
DATE関数の時刻版
DATE関数が「年・月・日→日付」を作るのに対して、TIME関数は「時・分・秒→時刻」を作ります。役割は対になっていると覚えておくとわかりやすいですよ。
TIME関数の書き方(構文と引数)
基本構文
=TIME(時, 分, 秒)
引数は3つとも必須です。省略するとエラーになります。
引数の説明
| 引数 | 必須/省略可 | 内容 |
|---|---|---|
| 時 | 必須 | 時の単位を数値で指定(通常0〜23)。24以上を指定すると24で割った余りが適用される |
| 分 | 必須 | 分の単位を数値で指定(通常0〜59)。60以上を指定すると時に繰り上がる |
| 秒 | 必須 | 秒の単位を数値で指定(通常0〜59)。60以上を指定すると分・時に繰り上がる |
NOTE
引数には0〜32767の整数を指定できます。小数を指定した場合は小数部分が切り捨てられます。負の値を指定すると #NUM! エラーになります。
TIME関数の基本的な使い方
数値を直接指定して時刻を作る
もっともシンプルな使い方です。時・分・秒を直接数値で指定します。
=TIME(10, 30, 0)
結果: 10:30:00
シリアル値「0.4375」が返り、セルには時刻形式で表示されます。
別セルの値から時刻を組み立てる
A1に「10」(時)、B1に「30」(分)、C1に「0」(秒)が入っている場合、次のように書きます。
=TIME(A1, B1, C1)
結果: 10:30:00
時・分・秒がバラバラの列に入っているデータを1つの時刻にまとめたいときに便利です。勤怠システムから出力したCSVデータの整形でよく使うパターンですよ。
シリアル値を確認する
TIME関数が返すのはシリアル値(小数)です。セルの表示形式を「標準」に変更すると数値を確認できます。
=TIME(10, 30, 0)
表示形式「時刻」: 10:30:00
表示形式「標準」: 0.4375
主な時刻とシリアル値の対応を覚えておくと便利です。
| 時刻 | シリアル値 |
|---|---|
| 0:00 | 0 |
| 6:00 | 0.25 |
| 12:00 | 0.5 |
| 18:00 | 0.75 |
| 23:59:59 | 0.99999… |
引数が範囲を超えたときの自動繰り上げ
TIME関数は、分に60以上を指定すると時に繰り上がります。秒も同様です。
=TIME(10, 90, 0)
結果: 11:30:00(90分 = 1時間30分なので、10時に1時間が加算される)
=TIME(10, 30, 120)
結果: 10:32:00(120秒 = 2分なので、30分に2分が加算される)
時の引数に24以上を指定した場合は、24で割った余りが適用されます。
=TIME(25, 0, 0)
結果: 1:00:00(25 ÷ 24 = 余り1)
NOTE
DATE関数は月や日が範囲を超えると年・月に繰り上がりますが、TIME関数は24時間を超えると0に戻ります。これはTIME関数が「1日以内の時刻」しか扱えないためです。24時間以上の時間を扱いたい場合は、シリアル値を直接計算してください。
TIME関数の実務活用パターン
時・分・秒を別セルから組み立てる
勤怠システムのエクスポートデータで、出勤時刻が「時」「分」「秒」の3列に分かれているケースは意外とあります。TIME関数で1列にまとめましょう。
A列に時、B列に分、C列に秒が入っているとします。
=TIME(A2, B2, C2)
結果をオートフィルで下にコピーすれば、全行まとめて時刻に変換できます。
勤務開始・終了時刻を固定値で設定する
勤務表のテンプレートで、定時の開始・終了時刻をセルに設定するときにTIME関数が便利です。
=TIME(9, 0, 0) → 9:00:00(定時開始)
=TIME(17, 30, 0) → 17:30:00(定時終了)
TIME関数で入力しておくと、時刻のシリアル値が正しく設定されるため、差し引き計算が確実にできます。直接 9:00 と入力しても同じ結果になりますが、TIME関数なら「時・分を別セルで管理→一括変更」といった柔軟な運用もできますよ。
時刻を15分単位・30分単位に丸める
勤怠管理で「出勤は15分単位に切り上げ、退勤は15分単位に切り捨て」というルールはよくありますよね。TIME関数とFLOOR関数・CEILING関数を組み合わせると実現できます。
A1に実際の出勤時刻(例: 9:07)が入っているとします。
15分単位に切り上げ(出勤向け):
=CEILING(A1, TIME(0,15,0))
結果: 9:15:00(9:07 → 次の15分区切りに切り上げ)
15分単位に切り捨て(退勤向け):
=FLOOR(A1, TIME(0,15,0))
結果: 9:00:00(9:07 → 直前の15分区切りに切り捨て)
TIME(0,15,0) が「15分」という時間の単位を表しているのがポイントです。30分単位にしたい場合は TIME(0,30,0) に変えるだけでOKです。
MROUND関数でも同じことができます
MROUND関数を使えば最寄りの単位に丸めます。
=MROUND(A1, TIME(0,15,0))は四捨五入的に最も近い15分に丸めるので、出勤・退勤で切り上げ/切り捨てを分ける必要がない場合に便利です。
経過時間を「○時間○分」で表示する
作業時間や勤務時間の差を求めて、わかりやすく表示するパターンです。
A1に開始時刻、B1に終了時刻が入っているとします。
=B1-A1
結果の表示形式を h"時間"mm"分" にすると「8時間30分」のように表示できます。
ただし結果が24時間を超える可能性がある場合は、表示形式を [h]"時間"mm"分" にしてください。角括弧 [h] を付けると、24時間を超えても正しく表示されます。
HOUR・MINUTE・SECOND関数との組み合わせ
HOUR関数・MINUTE関数・SECOND関数は時刻から時・分・秒を「取り出す」関数で、TIME関数とは逆方向の関係です。
組み合わせると、時刻の一部だけを変更できます。たとえば「分と秒はそのままで、時だけを+2する」場合はこう書きます。
=TIME(HOUR(A1)+2, MINUTE(A1), SECOND(A1))
A1が 10:30:45 なら、結果は 12:30:45 です。DATE関数とYEAR/MONTH/DAY関数の組み合わせと同じ考え方ですよ。
よくあるエラーと対処法
TIME関数はエラーが出にくい関数ですが、意図しない結果になるケースがあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 時刻ではなく小数が表示される | セルの表示形式が「標準」のまま | セルの表示形式を「時刻」に変更する |
| 分に60以上を指定したら時が変わった | TIME関数の自動繰り上げ機能 | 仕様通り。分が60を超えると時に繰り上がる |
| 時に25を指定したら1:00になった | 24以上は24で割った余りが適用される | 仕様通り。TIME関数は24時間以内の時刻のみ扱える |
| 24時間以上の時間を扱いたい | TIME関数の制限(1日未満のみ) | シリアル値を直接計算する。例: 25時間 = 25/24 |
| #NUM! エラーが出る | 引数に負の値を指定した | 0以上の値を指定する |
| #VALUE! エラーが出る | 引数に数値以外(文字列など)を指定した | 数値またはセル参照を確認する。文字列の時刻はTIMEVALUE関数を使う |
NOTE
TIME関数の戻り値は0以上1未満の小数(0:00:00〜23:59:59)です。24時間以上の計算結果が必要な場合は、TIME関数ではなくシリアル値の直接計算を使ってください。たとえば「25時間30分」は
=25/24+30/(24*60)で求められます。
似た関数との違い・使い分け
時刻を扱う関数はいくつかあります。目的に応じて使い分けましょう。
| 関数 | 目的 | 使い方の例 |
|---|---|---|
| TIME | 時・分・秒の数値から時刻を作成する | =TIME(10,30,0) → 10:30 |
| TIMEVALUE関数 | 文字列の時刻をシリアル値に変換する | =TIMEVALUE("10:30") → 0.4375 |
| NOW関数 | 現在の日付と時刻を自動取得する | =NOW() → 現在の日時 |
| HOUR関数 | 時刻から「時」を取り出す | =HOUR(A1) → 10 |
| MINUTE関数 | 時刻から「分」を取り出す | =MINUTE(A1) → 30 |
| SECOND関数 | 時刻から「秒」を取り出す | =SECOND(A1) → 0 |
| DATE関数 | 年・月・日の数値から日付を作成する | =DATE(2025,4,1) → 2025/4/1 |
使い分けのポイント
- 「時・分・秒をバラバラに指定して時刻を作りたい」→ TIME関数
- 「文字列の時刻をシリアル値に変換したい」→ TIMEVALUE関数
- 「今の日時を自動で入れたい」→ NOW関数
- 「時刻から時・分・秒を取り出したい」→ HOUR / MINUTE / SECOND関数
- 「日付を作りたい(時刻ではなく)」→ DATE関数
TIME関数は「時・分・秒を個別にコントロールできる」のが最大の強みです。HOUR/MINUTE/SECOND関数と組み合わせて時刻の一部だけを変更する使い方も覚えておくと便利ですよ。
TIMEとTIMEVALUEの違い
TIME関数は「数値から時刻を作る」関数、TIMEVALUE関数は「文字列の時刻をシリアル値に変換する」関数です。時・分・秒を個別に指定できるならTIME関数、すでに “10:30” のような文字列があるならTIMEVALUE関数を使いましょう。
まとめ
TIME関数は、時・分・秒の数値から時刻を作成する関数です。
- 構文:
=TIME(時, 分, 秒)— 3つの引数はすべて必須 - 戻り値: 時刻のシリアル値(0〜0.9999…。表示形式で時刻として見える)
- 自動繰り上げ: 分が60を超えると時に、秒が60を超えると分に自動調整。ただし24時間を超えると0に戻る
- 実務活用: 別セルの値から時刻を組み立てる、勤務時刻の固定値設定、15分/30分単位の丸め処理、HOUR/MINUTE/SECOND関数と組み合わせた時刻の一部変更
- 関連関数: TIMEVALUE関数(文字列変換)・NOW関数(現在時刻)・HOUR関数 / MINUTE関数 / SECOND関数(時刻の分解)と目的に応じて使い分ける
時刻の計算は勤怠管理やスケジュール作成で頻繁に使うので、TIME関数の「FLOOR/CEILINGと組み合わせた丸め処理」は覚えておいて損はないですよ。
