【VBA×初学者向け】8桁の数字を日付に変換する方法
みなさんこんにちは。
コードを書いているとYYYYMMDD形式となっている8ケタの数字の書式を変換する場面に遭遇することがよくあるかと思います。
Excelでしたら書式設定をすれば一瞬で変換することができますが。
VBAだと少しコツが必要になります。
今回は、8ケタの数字の書式を変更する方法についてご紹介します。
最初は覚えることに集中するかと思いますが、
慣れてくると圧倒的に作業効率は上がるので、
積極的に使用していくことをお勧めします。
この記事はこんな人におすすめ
この記事はこんな人におすすめです!
- VBAプログラミング:初級者~中級者
- コードだけサクッと取得したい人
- 効率の良いコードを書きたい人
といったところでしょうか。
初学者向けの過去記事
VBA初学者のための関連項目については過去の記事でもご紹介しております。
8ケタの数字を日付に変換する方法を習得するメリット
8ケタの数字を日付に変換する方法を習得するメリットは以下の通りです。
- VBAの基礎スキル定着
- 時間短縮と作業効率化
- 正確な操作の実現
といったところでしょうか。
本件は日常業務でも使用する機会が非常に多いかと思いますので、
一度やり方を覚えてしまえばかなり有効的なスキルになるかと思います。
準備
A1セルに以下の内容を入力します。
20241021
A2セルには2024/10/21と日付で出力して、
A3セルには令和6年10月24日と日付で出力するように実装します。
YYYY/DD/MMの形式で出力する
20241021を、A2セルに2024/10/21と日付で出力するサンプルプログラムは下記となります。
Sub TEST_Macro()
Dim myDate As Date
myDate = Format(Cells(1, 1).Value, ” ####/##/##”)
Cells(2, 1).NumberFormat = “yyyy/mm/dd”
Cells(2, 1).Value = myDate
End Sub
年号の形式で出力する
20241021を、A3セルに令和6年10月21日と日付で出力するサンプルプログラムは下記となります。
Sub TEST_Macro()
Dim myDate As Date
Dim Year As Integer, Month As Integer, Day As Integer
Year = Mid(Cells(1, 1).Value, 1, 4)
Month = Mid(Cells(1, 1).Value, 5, 2)
Day = Mid(Cells(1, 1).Value, 7, 2)
myDate = Year & "/" & Month & "/" & Day
Cells(3, 1).NumberFormat = "ggge年m 月 d 日"
Cells(3, 1).Value = myDate
End Sub
解説
8ケタの数字に変換するポイント
8桁の数字を日付に変換する際のポイントは、
- (1)日付型の変数を用意する。
- (2)Format関数の数値表示書式指定文字を用いて、日付と同じ書式(シリアル値)になおす。
- (3)日付型の変数に格納する。(日付になっていなければ、ここでオーバーフローするので確認できます。)
- (4)セルの書式を設定する。
- (5)セルに代入する。
年号の形式に変換するポイント
年号の形式に変換のサンプルプログラムでは、
8桁の数字をMid関数で、年、月、日に分けて、
その後で結合して日付型の変数に格納しています。
ユーザー定義関数を使ってシリアル値で出力する関数を作るのもありだと思います。
最後に
いかがでしたでしょうか。
日付の書式変換については現場ではよく遭遇する内容かと思います。
頻繁に直面する内容なだけについつい忘れがちですが、
しっかりマスターしておけばかなり時短になり効果的になります。
そのきっかけとして、少しでも参考になればと思います。
開発依頼について
ココナラでWebスクレイピング開発サービスを出品しております。
自分で開発をしようと思ったけど、依頼したり、何か聞きたいことがあったりしたら
いつでもお気軽にご相談ください。
また、本ブログからご依頼いただいた方については割引特典がございますので、
ご不明点と合わせてメッセージをいただけると幸いです。
Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!