※記事内には広告を含む場合がございます

VBA

【VBA】文字列型YYYYMMDDHHMMSSを時刻型に変換 VBAで関数化

更新日:

広告

前回の記事エクセルで文字列型YYYYMMDDHHMMSS形式を時刻型に変換する方法で、YYYYMMDDHHMMSS形式を時刻型に変換する関数を紹介しましたが、頻繁に使う場合はVBAで関数にするのがお勧めです。

時刻型に変換する「DATECHANGE」関数の作成

エクセルVBAにて下記ソースを張り付けてください。たったこれだけです。

Function DATECHANGE(d)

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

エクセル入力例

YYYYMMDDHHMMSS_VBA1
直接の入力であれば長くて可読性の悪い関数でしたが、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」と入力するだけです。
YYYYMMDDHHMMSS_VBA2
24時とならず、2日あとの0時になりました。

関数のままのほうがいい場合は?

このようによく使うものはVBAで関数を作れば簡単に入力し可読性も高いのですが、xlsm形式で保存しなければなりません。資料として受け取るほうもマクロだと警告が出たりするので、これだけのためにイマイチかもしれません。あらかじめマクロが入ったようなエクセルファイルだと追加で数行なので関数化に適していると思います。

広告

おすすめ記事

1

楽天モバイルにMNPしたのでレビューします。 楽天モバイルって? 楽天モバイルはドコモ、au、ソフトバンクと同じく独自回線を用いた携帯キャリアです。いわゆる格安SIM(MVNO)は携帯キャリアから通信 ...

2

みなさまは増え続けるID,パスワードをどのように管理しているでしょうか。 わたしは、パスワード管理ソフト「ロボフォーム」を利用しています。 パスワード管理ソフトとは インターネットの普及により、銀行や ...

-VBA
-, ,

Copyright© アルパカさんのもふもふした生活 , 2024 All Rights Reserved Powered by STINGER.