Excel。VBA。8桁の数値から日付に変換して、さらに、年月日で表示したい
<NumberFormatLocalプロパティ>
データを読み込んでみたところ、日付に該当するデータが8桁の数値でした。
A2:A6のように入力されていました。
これでは、日付として扱うことが面倒なので、日付にしたいわけです。
しかも、日付は年月日で表示したい。
そこで、今回は、Excel VBAでプログラム文をつくってみることにしました。
Sub 数字から日付()
Dim i As Integer
Dim row_count As Integer
Dim nen As String
Dim tuki As String
Dim niti As String
row_count = Range("A1").End(xlDown).Row
For i = 2 To row_count
nen = Mid(Cells(i, "a"), 1, 4)
tuki = Mid(Cells(i, "a"), 5, 2)
niti = Mid(Cells(i, "a"), 7, 2)
Cells(i, "b") = nen & "/" & tuki & "/" & niti
Cells(i, "c") = nen & "/" & tuki & "/" & niti
Cells(i, "c").NumberFormatLocal = "yyyy年m月d日"
Next
End Sub
A列をC列のように、年月日の表示形式で変換することできますが、確認のために、数値から日付に変換するために、B列をつくっています。
では、プログラム文を確認します。
お馴染みの変数宣言です。
row_countには、繰り返しの上限数を代入しています。
Dim i As Integer
Dim row_count As Integer
Dim nen As String
Dim tuki As String
Dim niti As String
row_count = Range("A1").End(xlDown).Row
For To Next文で繰り返し処理をしています。
8桁の数値の1文字目から4文字が年に該当しますので、その代入処理をMid関数で処理しています。
nen = Mid(Cells(i, "a"), 1, 4)
同じように、5文字目から2文字が月です。
tuki = Mid(Cells(i, "a"), 5, 2)
最後の日は、7文字目から2文字です。
niti = Mid(Cells(i, "a"), 7, 2)
日付に変更する処理
Cells(i, "b") = nen & "/" & tuki & "/" & niti
年月日の表示形式で表示したい場合は、まずは、日付に戻す処理をします。
Cells(i, "c") = nen & "/" & tuki & "/" & niti
その後、NumberFormatLocalプロパティをつかって、年月日の表示形式を設定します。
Cells(i, "c").NumberFormatLocal = "yyyy年m月d日"
このようにして、数値8桁を日付にすることができました。