Excel。VBA。日付が8桁の数値だったので、年月日の日付にするにはどうするの?
<Excel VBA>
インポートしたら、日付が8桁の数値になっていました。
これでは、日付としてつかえないので、「/(スラッシュ)」や年月日の日付にするには、どうしたらいいのでしょうか。
まして、大量のデータ。
そこで、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列の8桁の数値が、B列は「/(スラッシュ)」でC列は「年月日」の日付にすることができました。
それでは、プログラム文を確認します。
変数の宣言ですね。
Dim nen As String
Dim tuki As String
Dim niti As String
これは、年・月・日を格納するための変数です。
row_count = Range("A1").End(xlDown).Row
For to Next文で繰り返し処理をしますので、その回数を得るためのrow_countという変数を用意しました。
nen = Mid(Cells(i, "a"), 1, 4)
tuki = Mid(Cells(i, "a"), 5, 2)
niti = Mid(Cells(i, "a"), 7, 2)
ここでは、Mid関数をつかって、A列のデータを抽出しています。
例えば、「nen = Mid(Cells(i, "a"), 1, 4)」だと、nenという変数に年を格納しますが、文字列の1文字目から4文字を抽出するという意味です。
同じように、月と日も抽出し格納します。
Cells(i, "b") = nen & "/" & tuki & "/" & niti
変数と「/(スラッシュ)」を「&(アンパサンド)」で結合することで、日付にすることができます。
これで、「/(スラッシュ)」の日付にすることができました。
では、年月日はというと、一発でできないので、最初「/(スラッシュ)」の日付を作ります。
Cells(i, "c") = nen & "/" & tuki & "/" & niti
そのあと、表示形式の「NumberFormatLocal」プロパティをつかって、年月日に表示形式を変更します。
Cells(i, "c").NumberFormatLocal = "yyyy年m月d日"
このようにすれば、手早く、8桁の数値を日付にすることができます。