スプレッドシートのTIMEVALUE関数の使い方|文字列→時刻変換

スポンサーリンク

勤怠データを取り込んだら、時刻のはずなのに差し引き計算ができない。セルを見ると左寄せになっていて、どうやら文字列として取り込まれたみたいだ。

こうなると一つずつ手入力で直すのは大変ですよね。数百行あるデータなら、なおさらです。

そんなときに使うのがTIMEVALUE関数です。文字列として入っている時刻を、計算に使えるシリアル値に一発変換してくれます。

この記事では、TIMEVALUE関数の基本から、勤怠データの一括変換、DATEVALUE関数やTIME関数・VALUE関数との使い分けまで解説します。

TIMEVALUE関数とは?文字列の時刻をシリアル値に変換する関数

TIMEVALUE関数(読み方: タイムバリュー関数)は、文字列形式の時刻をシリアル値に変換する関数です。

名前は英語の「time(時刻)」+「value(値)」がそのまま関数名になっています。

Googleスプレッドシートでは、時刻を内部的に「シリアル値」という小数で管理しています。1日を「1」として、時刻を0から1未満の小数で表す仕組みです。たとえば12:00(正午)のシリアル値は「0.5」、18:00は「0.75」です。

セルに「10:30」と入力すると、通常はスプレッドシートが自動でシリアル値として認識してくれます。ところが外部システムからのインポートや&での文字列結合で「見た目は時刻だけど中身は文字列」という状態になることがあります。

TIMEVALUE関数は、こうした文字列の時刻をシリアル値に変換してくれます。変換すれば、時間の計算や並べ替えができるようになりますよ。

NOTE

文字列かどうかを見分けるコツは、セルの配置です。数値や時刻は右寄せ、文字列は左寄せで表示されます。左寄せになっていたら文字列の可能性が高いです。

TIMEVALUE関数の基本的な使い方

構文と引数

=TIMEVALUE(時刻文字列)

引数はひとつだけです。時刻を表す文字列をカッコの中に入れます。

引数必須/任意説明
時刻文字列必須時刻を表す文字列、またはセル参照

NOTE

日付を含む文字列(”2026/3/15 10:30″など)を渡した場合、日付部分は無視されます。時刻部分のシリアル値だけが返ります。日付も含めて変換したいときはVALUE関数を使ってください。

使用例:文字列の時刻をシリアル値に変換する

もっともシンプルな使い方です。ダブルクォーテーションで囲んだ時刻文字列を指定します。

=TIMEVALUE("10:30")

結果は「0.4375」(シリアル値)です。セルの表示形式が「標準」のままだと小数で表示されます。「表示形式」メニューから「時刻」を選べば、「10:30:00」として表示されますよ。

セル参照でも使えます。A2に文字列「10:30」が入っているとします。

=TIMEVALUE(A2)

結果は同じく「0.4375」です。

さまざまな時刻形式に対応しています。

=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をスプレッドシートにインポートすると、出退勤の時刻が文字列として取り込まれることがよくあります。

A列に文字列の出勤時刻が並んでいるとします。B2に次の数式を入れましょう。

=TIMEVALUE(A2)

この数式をB列にコピーすれば一括変換できます。変換後のB列をコピーして「値のみ貼り付け」すれば、数式を消してシリアル値だけ残せます。

あとはセルの表示形式を「時刻」に変更すれば完了です。

TIP

大量のデータを変換するときは、B列に数式を入れてからB列全体をコピーし、A列に「値のみ貼り付け」すると元のデータを直接置き換えられます。補助列が不要になってすっきりしますよ。

文字列の時刻同士で勤務時間を計算する

文字列のままでは引き算ができません。TIMEVALUE関数で変換すれば計算できます。

A1に出勤時刻「9:00」(文字列)、B1に退勤時刻「17:30」(文字列)が入っているとします。

=TIMEVALUE(B1)-TIMEVALUE(A1)

結果は「0.354166…」です。表示形式を「時刻」にすると「8:30:00」と表示されます。

勤務時間を時間単位の数値で取得したい場合は、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関数で戻せることを覚えておくと便利です。

TIMEVALUE関数のよくあるエラーと対処法

TIMEVALUE関数で発生するエラーは、ほとんどが引数の文字列に関する問題です。

症状原因対処法
#VALUE!エラー認識できない時刻形式“10:30″のように認識できる形式に修正する
#VALUE!エラー空のセルを参照している=IF(A1="","",TIMEVALUE(A1)) で空セルチェック
#VALUE!エラー余分なスペースが混入=TIMEVALUE(TRIM(A1)) でスペースを除去
小数が表示される表示形式が「標準」のまま表示形式を「時刻」に変更する(正常動作)
すでに時刻のセルに使って同じ値が返る参照先がすでにシリアル値TIMEVALUE関数は不要。そのセルはすでに時刻として認識されている

認識できない時刻形式のとき

「10時30分」のように日本語の単位付きで入力されていると、認識できずにエラーになることがあります。

SUBSTITUTE関数で「時」を「:」に、「分」を空文字に置き換えてからTIMEVALUE関数に渡しましょう。

=TIMEVALUE(SUBSTITUTE(SUBSTITUTE(A1,"時",":"),"分",""))

見えないスペースや制御文字があるとき

見た目は正しい時刻なのにエラーが出るときは、スペースや制御文字が混入している可能性があります。

TRIM関数CLEAN関数で前処理してから変換しましょう。

=TIMEVALUE(TRIM(CLEAN(A1)))

TRIM関数は余分なスペースを除去し、CLEAN関数は印刷できない制御文字を除去します。

IFERRORで安全に変換する

変換できない文字列が混在しているときは、IFERRORで囲むとエラーを回避できます。

=IFERROR(TIMEVALUE(A1), "")

エラーのときは空白を返します。大量データを一括変換するときに便利です。

DATEVALUE関数・TIME関数・VALUE関数との使い分け

文字列と時刻・日付を変換する関数はいくつかあります。目的に応じて使い分けましょう。

関数目的使い方の例
TIMEVALUE文字列の時刻をシリアル値に変換=TIMEVALUE("10:30") → 0.4375
DATEVALUE関数文字列の日付をシリアル値に変換=DATEVALUE("2026/3/15") → 46097
VALUE関数文字列を数値に変換(日付・時刻・数値すべて対応)=VALUE("10:30") → 0.4375
TEXT関数シリアル値を指定書式の文字列に変換=TEXT(0.4375,"h:mm") → “10:30”
TIME関数時・分・秒の数値から時刻を作成=TIME(10,30,0) → 10:30

TIMEVALUEとDATEVALUEの違い

TIMEVALUE関数とDATEVALUE関数は「ペア関数」です。どちらも文字列をシリアル値に変換しますが、対象が異なります。

  • TIMEVALUE関数: 文字列の時刻を受け取る(例: =TIMEVALUE("10:30")
  • DATEVALUE関数: 文字列の日付を受け取る(例: =DATEVALUE("2026/3/15")

日付+時刻の文字列を渡したときの挙動も対称的です。

=TIMEVALUE("2026/3/15 10:30")  → 0.4375(時刻部分のみ)
=DATEVALUE("2026/3/15 10:30")  → 46097(日付部分のみ)

TIMEVALUE関数は日付部分を無視し、DATEVALUE関数は時刻部分を無視します。両方のシリアル値が必要なときはVALUE関数を使えば日付+時刻の完全なシリアル値が返ります。

TIMEVALUEとVALUEの違い

VALUE関数は時刻文字列にも使えるため、多くの場面でTIMEVALUE関数と同じ結果になります。

=TIMEVALUE("10:30")  → 0.4375
=VALUE("10:30")      → 0.4375

結果は同じです。ではどう使い分ければいいのでしょうか。

TIMEVALUE関数は「時刻文字列専用」です。数式を見た人に「この列は時刻データを扱っている」という意図が伝わります。確実に時刻とわかっている列にはTIMEVALUE関数がおすすめです。

一方、VALUE関数は数値も日付も時刻もまとめて変換できます。「何の文字列が入っているかわからない」ときや、日付と時刻が混在している列にはVALUE関数が向いています。

もうひとつの違いは、日付を含む文字列の扱いです。

=TIMEVALUE("2026/3/15 10:30")  → 0.4375(時刻部分のみ)
=VALUE("2026/3/15 10:30")      → 46097.4375(日付+時刻)

TIMEVALUE関数は日付部分を無視して時刻のシリアル値だけを返します。VALUE関数は日付も含めた値を返します。時刻だけが必要なときはTIMEVALUE関数のほうが安全です。

TIMEVALUEとTIME関数の違い

どちらも時刻のシリアル値を返しますが、入力が異なります。

  • TIMEVALUE関数: 文字列の時刻を受け取る(例: =TIMEVALUE("10:30")
  • TIME関数: 時・分・秒の数値を受け取る(例: =TIME(10,30,0)

時・分・秒がバラバラのセルに入っているならTIME関数を使いましょう。「10:30」のような時刻形式の文字列がすでにあるならTIMEVALUE関数が適しています。

まとめ

TIMEVALUE関数は、文字列形式の時刻をシリアル値に変換する関数です。

ポイントを整理します。

  • 構文は =TIMEVALUE(時刻文字列) の1引数だけ
  • 勤怠データで時刻が文字列になったときの定番の解決策
  • 24時間形式・AM/PM形式・秒付き形式など幅広い形式に対応
  • 日付を含む文字列は時刻部分のみ変換(日付は無視される)
  • DATEVALUE関数は日付版のペア関数
  • VALUE関数との違いは「時刻専用」であること。意図が明確になる
  • 時・分・秒がバラバラならTIME関数、文字列がすでにあるならTIMEVALUE関数
  • TEXT関数はTIMEVALUE関数の逆操作
  • エラーが出たらTRIM・CLEAN関数で前処理、IFERRORで安全に変換

まずは =TIMEVALUE(A2) で勤怠データの文字列時刻を変換するところから試してみてください。

関連記事

タイトルとURLをコピーしました