前回の記事エクセルで文字列型YYYYMMDDHHMMSS形式を時刻型に変換する方法で、YYYYMMDDHHMMSS形式を時刻型に変換する関数を紹介しましたが、頻繁に使う場合はVBAで関数にするのがお勧めです。
時刻型に変換する「DATECHANGE」関数の作成
エクセルVBAにて下記ソースを張り付けてください。たったこれだけです。
DATECHANGE = CDate(Mid(d, 1, 4) & "/" & Mid(d, 5, 2) & "/" & Mid(d, 7, 2) & " " & Mid(d, 9, 2) & ":" & Mid(d, 11, 2) & ":" & Mid(d, 13, 2))
DATECHANGE = WorksheetFunction.Text(DATECHANGE, "yyyy/m/d h:mm:ss")
End Function
エクセル入力例
直接の入力であれば長くて可読性の悪い関数でしたが、VBA「DATECHANGE」関数を作れば、他の「SUM」等と同じように「=datechange(A1)」とセルに入力するだけです。
この場合はセルの書式も「ユーザー定義」にする必要はなく、「標準」のままでOKです。
B2セルに「2019/1/8 12:34:56」と表示されました。
計算してみよう
前回と同様に時刻型になった値を計算してみましょう。2019/1/8 12:34:56から1日半(36時間)後を出すにはC2セルに「=B2+1.5」と入力するだけです。
24時とならず、2日あとの0時になりました。
関数のままのほうがいい場合は?
このようによく使うものはVBAで関数を作れば簡単に入力し可読性も高いのですが、xlsm形式で保存しなければなりません。資料として受け取るほうもマクロだと警告が出たりするので、これだけのためにイマイチかもしれません。あらかじめマクロが入ったようなエクセルファイルだと追加で数行なので関数化に適していると思います。