「勤怠データを取り込んだら時刻が文字列になっていて、差し引き計算ができない…」そんな経験はありませんか。見た目は時刻なのにExcelが時刻として認識してくれないと、勤務時間の集計でつまずきますよね。
そんなときに使うのがTIMEVALUE関数です。この記事では基本の書き方から、勤怠データの一括変換や経過時間の計算まで、実務パターンをまとめて紹介します。
この記事は次のような人におすすめ
– 勤怠システムや他ツールから取り込んだ時刻データが文字列になってしまった
– 文字列の時刻を計算や並べ替えに使えるようにしたい
– TIMEVALUE関数とVALUE関数の違いを整理したい
TIMEVALUE関数とは?
TIMEVALUE関数(読み方: タイムバリュー)は、文字列形式の時刻をシリアル値に変換する関数です。英語の「time(時刻)」+「value(値)」がそのまま関数名になっています。
Excelでは時刻を内部的に「シリアル値」という小数で管理しています。1日を「1」として、時刻を0から1の間の小数で表す仕組みです。たとえば12:00(正午)のシリアル値は「0.5」、18:00は「0.75」です。
セルに 10:30 と入力すると、通常はExcelが自動的にシリアル値として認識してくれます。ところが外部システムからのインポートや&での文字列結合などで「見た目は時刻だけど中身は文字列」という状態になることがあります。
TIMEVALUE関数は、こうした文字列をシリアル値に変換してくれます。時刻として計算や並べ替えに使えるようになりますよ。
文字列かどうかを見分けるコツ
セルの値が文字列になっていると、セルの左上に小さな緑の三角形(エラーインジケーター)が表示されることがあります。また、セルを選択して数式バーを見たとき、左寄せで表示されていれば文字列の可能性が高いです。
TIMEVALUE関数の書き方(構文と引数)
基本構文
=TIMEVALUE(時刻文字列)
引数は1つだけで、必須です。
引数の説明
| 引数 | 必須/省略可 | 内容 |
|---|---|---|
| 時刻文字列 | 必須 | 時刻を表す文字列を指定する。”10:30″ や “8:35 AM” のようにExcelが時刻として認識できる形式が必要 |
note
日付を含む文字列(”2025/4/1 10:30″など)を渡した場合、日付部分は無視されます。日付も含めて変換したいときは、VALUE関数を使ってください。
TIMEVALUE関数の基本的な使い方
文字列を直接指定して変換する
もっともシンプルな使い方です。ダブルクォーテーションで囲んだ時刻文字列を指定します。
=TIMEVALUE("10:30")
結果: 0.4375(シリアル値)
セルの表示形式が「標準」のままだと小数のまま表示されます。時刻として見たい場合は、表示形式を「時刻」に変更してください。
セル参照で変換する
A1に文字列 10:30 が入っている場合、次のように書きます。
=TIMEVALUE(A1)
結果: 0.4375(シリアル値)
勤怠データのインポートで時刻列が文字列になったとき、この形で隣の列に変換式を入れてオートフィルするのが定番のパターンです。
さまざまな時刻形式に対応する
TIMEVALUE関数はExcelが時刻として認識できる形式であれば変換できます。
=TIMEVALUE("10:30") → 0.4375
=TIMEVALUE("10:30:00") → 0.4375
=TIMEVALUE("10:30 AM") → 0.4375
=TIMEVALUE("10:30 PM") → 0.9375
=TIMEVALUE("22:30") → 0.9375
24時間形式・AM/PM形式・秒付き形式など、幅広い形式に対応しています。
TIMEVALUE関数の実務活用パターン
勤怠データの時刻を一括変換する
勤怠管理システムから出力したCSVファイルをExcelで開くと、出退勤の時刻が文字列として取り込まれることがよくあります。
A列に文字列の出勤時刻が入っているとします。B列に変換式を入れましょう。
=TIMEVALUE(A2)
この式をB列にオートフィルすれば、一括変換できます。変換後のB列をコピーして「値のみ貼り付け」すれば、元のA列を置き換えることもできますよ。
tip
変換後にB列を「値のみ貼り付け」でA列に上書きすれば、補助列を残さずにすみます。貼り付けた後はA列の表示形式を「時刻」に変更するのを忘れずに。
文字列の時刻同士で勤務時間を計算する
文字列のままでは引き算ができませんが、TIMEVALUEで変換すれば計算できます。
A1に出勤時刻 9:00(文字列)、B1に退勤時刻 17:30(文字列)が入っているとします。
=TIMEVALUE(B1)-TIMEVALUE(A1)
結果: 0.354166…(表示形式を「時刻」にすると「8:30」と表示される)
勤務時間を時間単位の数値で取得したい場合は、24を掛けます。
=(TIMEVALUE(B1)-TIMEVALUE(A1))*24
結果: 8.5(8時間30分)
&で結合した時刻文字列をシリアル値に戻す
セルの値を&で結合すると、結果は文字列になります。時刻として使いたい場合はTIMEVALUE関数で変換しましょう。
A1に「10」(時)、B1に「30」(分)が入っているとします。
=TIMEVALUE(A1&":"&B1)
結果: 0.4375(10:30のシリアル値)
ただしこのケースでは、TIME関数で =TIME(A1,B1,0) と書くほうがシンプルです。TIMEVALUEは「すでに時刻形式の文字列が存在する」場面で使うのがベストです。
TEXT関数で作った時刻文字列を元に戻す
TEXT関数はシリアル値を文字列に変換する関数で、TIMEVALUE関数とは逆の操作になります。
=TEXT(A1, "h:mm") → "10:30"(文字列)
=TIMEVALUE("10:30") → 0.4375(シリアル値)
TEXT関数で書式を整えた結果をさらに計算に使いたくなったら、TIMEVALUEで戻せることを覚えておくと便利です。
日付+時刻の文字列から時刻だけを取り出す
他システムから取り込んだデータに「2025/4/1 10:30」のような日付+時刻の文字列が入っていて、時刻部分だけが必要なケースがあります。
=TIMEVALUE(A1)
日付部分は自動的に無視されて、時刻のシリアル値だけが返ります。日付も含めた完全なシリアル値が必要な場合は、VALUE関数を使ってください。
よくあるエラーと対処法
TIMEVALUE関数で発生するエラーは、ほとんどが引数の文字列に関する問題です。
| 症状 | 原因 | 対処法 |
|---|---|---|
| #VALUE! エラーが出る | 引数がExcelが認識できない時刻形式 | “10:30” のようにExcelが解釈できる形式に修正する |
| #VALUE! エラーが出る | 引数が空のセルを参照している | IF関数で空セルチェックを入れる: =IF(A1="","",TIMEVALUE(A1)) |
| #VALUE! エラーが出る | セル内に余分なスペースがある | TRIM関数でスペースを除去: =TIMEVALUE(TRIM(A1)) |
| 小数が表示される | セルの表示形式が「標準」のまま | セルの表示形式を「時刻」に変更する(TIMEVALUE関数の正常な動作。シリアル値が返っている) |
| すでに時刻のセルに使って同じ値が返る | 参照先がすでにシリアル値(文字列ではない) | TIMEVALUE関数は不要。そのセルはすでに時刻として認識されている |
note
TIMEVALUE関数は「文字列を時刻に変換する」関数です。すでにExcelが時刻として認識しているセルに対して使う必要はありません。「文字列かどうか分からない」ときは、TYPE関数で確認できます。
=TYPE(A1)が「2」なら文字列です。
似た関数との違い・使い分け
文字列と時刻・日付を変換する関数はいくつかあります。目的に応じて使い分けましょう。
| 関数 | 目的 | 使い方の例 |
|---|---|---|
| TIMEVALUE | 文字列の時刻をシリアル値に変換する | =TIMEVALUE("10:30") → 0.4375 |
| VALUE関数 | 文字列を数値に変換する(日付・時刻・数値すべて対応) | =VALUE("10:30") → 0.4375 |
| TEXT関数 | シリアル値を指定した書式の文字列に変換する | =TEXT(0.4375,"h:mm") → “10:30” |
| TIME関数 | 時・分・秒の数値から時刻を作成する | =TIME(10,30,0) → 10:30 |
| DATEVALUE関数 | 文字列の日付をシリアル値に変換する | =DATEVALUE("2025/4/1") → 45748 |
使い分けのポイント
- 「文字列の時刻を時刻に変換したい」→ TIMEVALUE関数
- 「文字列の数値・日付・時刻を数値に変換したい」→ VALUE関数(より汎用的)
- 「時刻を好きな書式の文字列にしたい」→ TEXT関数(TIMEVALUEの逆操作)
- 「時・分・秒を個別に指定して時刻を作りたい」→ TIME関数
- 「文字列の日付を日付に変換したい」→ DATEVALUE関数
TIMEVALUEとVALUEの違い
VALUE関数は時刻文字列にも使えるため、多くの場面でTIMEVALUE関数と同じ結果になります。ただしTIMEVALUE関数は「時刻文字列専用」なので、数式の意図が読み手に伝わりやすいのがメリットです。また、日付+時刻を含む文字列ではVALUE関数は日付部分もシリアル値に含めますが、TIMEVALUEは時刻部分のみを返します。
まとめ
TIMEVALUE関数は、文字列形式の時刻をシリアル値に変換する関数です。
- 構文:
=TIMEVALUE(時刻文字列)— 引数は1つだけ - 戻り値: 時刻のシリアル値(表示形式を「時刻」にすれば時刻として見える)
- 主な用途: 勤怠データで文字列になった時刻の変換、&結合した時刻文字列の変換、文字列の時刻同士の勤務時間計算
- エラー対処: #VALUE! が出たら時刻形式・空セル・余分なスペースを確認
- 関連関数: VALUE関数(汎用変換)、TEXT関数(逆操作)、TIME関数(時分秒から作成)
勤怠データの取り込みや他システムとの連携では、時刻が文字列になるトラブルはよくあります。TIMEVALUEを知っておけばサッと対処できるので、覚えておいて損はないですよ。
