エクセルやCSVで日付時刻を表現する文字列で「YYYYMMDDHHMMSS」形式がありますが、1日前や1時間後等を計算する場合、単純に+1をしては25時になったりしてエラーの元です。
そこで使うのが「時刻型に変換」です。
時刻型に変換する関数
エクセルのセルに下記関数を入力してください。
A1セルにYYYYMMDDHHMMSSの文字列があることが前提です。
エクセル入力例
A1セルに元となる文字列、A2セルに上記式を記入して下さい。
A2セルの表示形式が標準なら43474などの数値になります。
これはシリアル値と呼ばれる数値でエクセルの時刻型はこの形式で管理されています。数字の意味は1900年1月1日 0時0分0秒を「1」、1900年1月2日 0時0分0秒を「2」といった形で1日を「1」とし、時刻を少数で表しています。例えばシリアル値で「20.5」ならば、1900年1月20日 12時0分0秒となります。
2019/1/8 12:34:56といった形式で表示したければ
右クリック>セルの書式設定>表示形式>ユーザー定義>yyyy/m/d h:mm:ss
と追記してください。
無事、A2セルに「2019/1/8 12:34:56」と表示されました。
計算してみよう
計算してみましょう。例えば、2019/1/8 12:34:56から1日半(36時間)後を出すには
C1セルに「=B1+1.5」と入力するだけです。
24時とならず、2日あとの0時になりました。
VBAで関数化するにはこちらの記事もどうぞ
【VBA】文字列型YYYYMMDDHHMMSSを時刻型に変換 VBAで関数化