Excel(エクセル)TIMEVALUE関数の使い方|文字列を時刻シリアル値に変換する
使用関数:TIMEVALUE
TIMEVALUE(タイムバリュー)関数とは?
Excelでは24時間を「1」として0~1の間の小数で表されるシリアル値で時刻を管理しています。12:00は「0.5」、18:00は「0.75」です。この数値を時間計算に使います。18:00(0.75)から12:00(0.5)を引き算すれば6:00(0.25)になります。
しかし、他のソフトなどからペーストされた時刻文字列がExcelに「時刻・時間」として認識されない場合があります。「時刻」でないデータはシリアル値を持たないので計算やデータの並べ替えに使えません。これをExcelの「時刻」に変換してシリアル値を付与し、計算にも使えるようにする関数がTIMEVALUEです。
TIMEVALUE関数の引数と書式
「数式」タブ「関数ライブラリ」→「日付/時刻」→ TIMEVALUEをクリックします。
TIMEVALUEの引数は「時刻文字列」です。
書式の構成はこうなります。
TIMEVALUE関数で時刻文字列をシリアル値に変換する
TIMEVALUE関数の引数ダイアログを使って、時刻文字列をシリアル値に変換してみましょう。
「時刻」に見えるデータが入力されていますが、左揃えになっているので文字列だと分かります。これをTIMEVALUE関数でシリアル値に変換します。
変換されたシリアル値の入るセルを選択してTIMEVALUE関数の引数ダイアログを開き、「時刻文字列」に最初の文字列のセルをクリックで指定します。
他のセルにもオートフィルコピーしてシリアル値が取得されましたが、最後の行だけはエラー#VALUE!が返りました。
TIMEVALUE関数でエラー#VALUE!になる理由
- 8時25分 → 0.35
- 7:12:55.123 → 0.30
- 11時30分50秒 → 0.48
- 3/11 16:00 → 0.67
- 2:31 PM → 0.60
- 2022/2/20 4:16 → 0.18
- R4/2/20 4:16 → #VALUE!
西暦の日付は無視されるが和暦はエラー#VALUE!になる
前章の最終行がエラーになったのは「R4/2/20 4:16」が「時刻を表す文字列」ではないからです。TIMEVALUE関数では時刻または日付/時刻を表している文字列であるとExcelが判定したものだけが変換の対象になります。
西暦で入力された日付は無視されるだけでシリアル値はちゃんと返りますが、和暦の年号が付いた文字列はエラーになります。「2022/2/20 4:16」はOKで、「R4/2/20 4:16」はNGです。「曜日」を付け足した日付(例:2022/2/20 Sun 4:16)もエラー#VALUE!になります。これは西暦・和暦どちらもエラーです。
和暦R4を西暦2022に変える、曜日などの余計な文字列を削除する、などで対処すれば正常にシリアル値が取得できます。
表示形式が数値や時刻ではエラー#VALUE!になる
TIMEVALUEは文字列を時刻に変換する関数なので、セルの表示形式が「数値」「日付」「時刻」になっているとエラー#VALUE!になります。
前章でシリアル値を取得した同じ表示の値を「表示形式=時刻」で入力すると、全てエラーが返ります。
表示形式を「文字列」に変更すれば正常にシリアル値が取得できます。
その他、引数に時刻を直接入力する場合、ダブルクォーテーションで括るのを忘れるとエラーになります。
TIMEVALUE関数で取得したシリアル値を時刻に変換する
計算や並べ替えができると言っても、シリアル値の表示では日付を読み取れません。右クリック→「セルの書式設定」→「表示形式」→「時刻」(または「ユーザー定義」)から好きな形式に変換しておきます。
- 時刻と見える入力値でも文字列形式だと計算や並べ替えに使えません。TIMEVALUE関数はこのような時刻文字列をシリアル値に変換します
- 時刻文字列にある西暦の日付は無視されますが、和暦の日付はエラー#VALUE!が返ります
- 表示形式が「文字列」でない時刻の表示にTIMEVALUE関数を適用するとエラー#VALUE!が返ります
- TIMEVALUE関数で取得したシリアル値はセルの書式設定の表示形式で好きな日付形式に変換して使います