「excel2010 マクロ 日付型のデータを年と月と日で分解する」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBAで、日付データを年・月・日に分解するには、どのようなコードを書けばいいのかを探している方による検索です。
参考になりそうな簡単なマクロを3つご紹介しておきます。
Year関数・Month関数・Day関数で日付データを分解する
ワークシート関数のYEAR関数・MONTH関数・DAY関数に慣れている方なら、以下のマクロが一番わかりやすいでしょう。
Dim tmp As Variant
tmp = ActiveCell.Value
If IsDate(tmp) Then
MsgBox Year(tmp)
MsgBox Month(tmp)
MsgBox Day(tmp)
End If
例えば「2016/2/14」という日付データの入力されているセルがアクティブな状態で上記のマクロを実行すると、
2016
2
14
の順にメッセージボックスが表示されます。
ワークシート関数のYEAR・MONTH・DAYと同じスペルで、同じ動きをする関数がVBAにも存在しているのです。
Format関数で日付データを分解する
日付データを年・月・日に分解したあとに、何らかの書式設定を行うのなら、Format関数を使う方法もあります。
Dim tmp As Variant
tmp = ActiveCell.Value
If IsDate(tmp) Then
MsgBox Format(tmp, "yy")
MsgBox Format(tmp, "mm")
MsgBox Format(tmp, "dd")
End If
「2016/2/14」という日付データの入力されているセルがアクティブな状態で上記のマクロを実行すると、
14
02
14
の順にメッセージボックスが表示されます。
ワークシート関数のTEXT関数に似ているのが、VBAのFormat関数です。
DatePart関数を使って日付データを分解する
ある日付が何週目なのか等を調べるのに使えるDatePart関数でも日付データを分解できます。
Dim tmp As Variant
tmp = ActiveCell.Value
If IsDate(tmp) Then
MsgBox DatePart("yyyy", tmp)
MsgBox DatePart("m", tmp)
MsgBox DatePart("d", tmp)
End If
例えば「2016/2/14」という日付データの入力されているセルがアクティブな状態で上記のマクロを実行すると、
2016
2
14
の順にメッセージボックスが表示されます。
最終更新日時:2019-06-13 08:00
- Newer:オブジェクトブラウザがより身近になった
- Older:VBAでレイアウトをグラフに
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで日付データを年・月・日に分解する