3/09/2024

Excel。VBA。8桁の数値から日付に変換して、さらに、年月日で表示したい【DATE】

Excel。VBA。8桁の数値から日付に変換して、さらに、年月日で表示したい

<NumberFormatLocalプロパティ>

データを読み込んでみたところ、日付に該当するデータが8桁の数値でした。


A2:A6のように入力されていました。

NumberFormatLocalプロパティ

これでは、日付として扱うことが面倒なので、日付にしたいわけです。

しかも、日付は年月日で表示したい。


そこで、今回は、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桁を日付にすることができました。