【ExcelVBA・マクロ】DateValueの使い方|文字列を日付に変換する方法【コピペOK】

DateValueの使い方 ExcelVBA

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

  • 文字列の「20240101」を日付として扱いたい
  • CSVのデータを日付に変換したい
  • 日付計算できる形にしたい

このような場合は、DateValue関数を使うことで解決できます。
文字列を日付型に変換できるため、データ処理で非常に重要な関数です。

この記事では、DateValueの基本から実務で使える活用方法までを初心者向けに分かりやすく解説します。


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

この記事でできること

  • 文字列を日付に変換できる
  • 日付計算ができるようになる
  • 実務で使える変換方法が分かる

基本:DateValue関数の使い方

基本構文はこちらです。

DateValue(文字列)

例:

MsgBox DateValue("2024/01/01")

→ 日付型の「2024/01/01」に変換されます。


DateValueのポイント

  • 文字列 → 日付型に変換
  • 日付計算ができるようになる
  • 表示形式はセル側で変わる

文字列から日付に変換する例

Dim dt As Date

dt = DateValue("2024/05/10")

MsgBox dt

セルの文字列を日付に変換する

Dim dt As Date

dt = DateValue(Range("A1").Value)

MsgBox dt

CSVや外部データの変換でよく使います。


日付計算と組み合わせる

DateValueで変換すると計算が可能になります。

Dim dt As Date

dt = DateValue("2024/01/01")

MsgBox dt + 7

→ 2024/01/08(7日後)


8桁文字列(yyyymmdd)を変換する方法

そのままでは変換できないため、加工が必要です。

Dim str As String
Dim dt As Date

str = "20240101"

dt = DateValue(Left(str, 4) & "/" & Mid(str, 5, 2) & "/" & Right(str, 2))

MsgBox dt

この方法で8桁数字も日付に変換できます。


Formatと組み合わせる

Format(DateValue("2024/01/01"), "yyyymmdd")

→ 20240101


セルに書き込む例

Range("A1").Value = DateValue("2024/01/01")

実務でよくある使い方

  • CSVデータの変換
  • 文字列日付の正規化
  • 日付計算の前処理
  • データクレンジング

特に外部データ連携では必須レベルです。


注意点(重要)

① 認識できる形式が必要

以下のような形式でないとエラーになります。

  • 2024/01/01
  • 2024-01-01

② 地域設定の影響

日付形式は環境に依存する場合があります。

③ 時刻は含まれない

DateValueは日付のみです(時間は切り捨てられます)。


よくあるエラーと対処法

① 型が一致しません

日付として認識できない文字列の可能性があります。

② 8桁数字が変換できない

区切り(/)を入れてから変換してください。

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

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


まとめ

  • DateValueで文字列を日付に変換
  • 日付計算の前処理に必須
  • 形式に注意が必要
  • 実務ではCSV処理で大活躍

DateValueを使いこなせるようになると、外部データ処理や日付計算がスムーズになります。
特にデータ整形では必須の関数なので、ぜひ活用してみてください。

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

コメント

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