【ExcelVBA・マクロ】日付を8桁の数字(YYYYMMDD)に変換する方法|日付データを数値化するコード【コピペOK】

日付を8桁の数字(YYYYMMDD)に変換する方法 ExcelVBA

Excelで日付データを扱っていると、次のようなことはありませんか?

  • 2024/01/01 を 20240101 にしたい
  • 日付をシステム用の8桁形式に変換したい
  • CSV出力や連携用に数値形式にしたい

このような場合は、VBAで日付を8桁の数字(YYYYMMDD)に変換することで簡単に対応できます。
日付型のままだと扱いにくい場面でも、8桁形式にすることで処理しやすくなります。

この記事では、日付データを8桁の数値に変換する方法を初心者向けに分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • 日付をYYYYMMDD形式に変換できる
  • 数値・文字列として扱えるようになる
  • 複数セルを一括変換できる
  • 実務で使える安全なコードが分かる

基本:日付を8桁の数字に変換するコード

まずは基本コードです。
A1セルの日付を「YYYYMMDD」に変換します。

Option Explicit

Sub ConvertDateTo8Digit()

    Dim dt As Date

    dt = Range("A1").Value

    Range("A1").Value = Format(dt, "yyyymmdd")

End Sub

コードのポイント解説

① Format関数を使う

Format(日付, "yyyymmdd")

日付を指定した形式の文字列に変換できます。

② yyyymmddとは?

  • yyyy → 年(4桁)
  • mm → 月(2桁)
  • dd → 日(2桁)

これで「20240101」のような形式になります。


数値として扱いたい場合

Format関数は文字列を返すため、数値として扱いたい場合は変換します。

Range("A1").Value = CLng(Format(dt, "yyyymmdd"))

これで「20240101」が数値として扱えます。


複数セルを一括変換する方法

A列のデータをまとめて変換する場合はこちらです。

Option Explicit

Sub ConvertColumnTo8Digit()

    Dim i As Long
    Dim lastRow As Long

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 1 To lastRow

        If IsDate(Cells(i, 1).Value) Then
            Cells(i, 1).Value = Format(Cells(i, 1).Value, "yyyymmdd")
        End If

    Next i

    MsgBox "変換が完了しました。", vbInformation

End Sub

IsDateでチェックすることで安全に処理できます。


表示形式だけ変更する方法(元の値はそのまま)

値を変えずに表示だけ変更したい場合はこちらです。

Range("A1").NumberFormat = "yyyymmdd"

この方法なら、日付の内部データはそのままで表示だけ変更できます。


実務でよくある使い方

  • CSV出力用データの整形
  • システム連携用のデータ作成
  • 日付をキーとして比較・検索
  • ファイル名に日付を付ける

特に、システム連携では8桁形式がよく使われます。


ファイル名に使う例(実務でよく使う)

Option Explicit

Sub CreateFileName()

    Dim fileName As String

    fileName = "レポート_" & Format(Date, "yyyymmdd") & ".xlsx"

    MsgBox fileName

End Sub

「レポート_20240101.xlsx」のように作れます。


よくあるエラーと対処法

① 日付ではないデータが混ざっている

必ず IsDate でチェックしてください。

② 文字列になってしまう

数値として扱いたい場合は CLng を使いましょう。

③ コードは正しいのにエラーになる

コピー時に全角記号や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • 日付→8桁変換は Format("yyyymmdd") を使う
  • 数値にするなら CLng
  • 複数セルはループ処理
  • IsDateで安全に処理する

日付を8桁の数字に変換できるようになると、データ連携や管理が一気に楽になります。
特に実務では使用頻度が高いので、ぜひ活用してみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました