シリアル値を日付に変換したいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAでシリアル値を日付に変換したいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・VBAでシリアル値を日付に変換する方法
についてまとめます!
もくじ
Excelで扱う日付のシリアル値とは
Excelで扱う日付のシリアル値とは、日付と時間を数値で識別する数字のことを指します。
シートでは「1900/1/1 0:00:00」をVBAでは「1899/12/31 0:00:00」「1.0」として保持する数値で、整数部分が日付、小数点以下が時刻として扱われています。
例えば、A1セルにシリアル値「1」を入力し、Excel側の書式設定を日付にすると、
Excelシート側でシリアル値が日付表記に変換されます。
関数でシリアル値を日付に変換する方法
シリアル値を日付に変換する関数一覧
シリアル値を日付に変換する関数一覧は以下の通りです。
関数名 | 機能 | 書式 |
---|---|---|
YEAR | シリアル値を年に変換します。 | =YEAR(シリアル値) |
MONTH | シリアル値を月に変換します。 | =MONTH(シリアル値) |
DAY | シリアル値を日付に変換します。 | =DAY(シリアル値) |
WEEKDAY | シリアル値を曜日に変換します。 | =WEEKDAY(シリアル値, [種類]) |
HOUR | シリアル値を時刻に変換します。 | =HOUR(シリアル値) |
MINUTE | シリアル値を時刻の分に変換します。 | =MINUTE(シリアル値) |
SECOND | シリアル値を時刻の秒に変換します。 | =SECOND(シリアル値) |
DATESTRING | シリアル値を和暦で表示します。 | =DATESTRING(シリアル値) |
次にそれぞれの関数の結果についてみてみましょう。
シリアル値は以下とし、2021年7月23日10時39分22秒を表します。
44400.444
B1セルへシリアル値を入力します。
YEAR関数
シリアル値を年に変換します。
=YEAR(B1)
MONTH関数
シリアル値を月に変換します。
=MONTH(B1)
DAY関数
シリアル値を日付に変換します。
=DAY(B1)
WEEKDAY関数
シリアル値を曜日に変換します。日曜日を1とし数えていきます。
=WEEKDAY(B1)
HOUR関数
シリアル値を時刻に変換します。ここから小数点以下の数値が対象となります。
=HOUR(B1)
MINUTE関数
シリアル値を時刻の分に変換します。
=MINUTE(B1)
SECOND関数
シリアル値を時刻の秒に変換します。
=SECOND(B1)
DATESTRING関数
シリアル値を和暦で表示します。
=DATESTRING(B1)
VBAでシリアル値を日付に変換する方法
VBAでシリアル値を日付に変換する方法について説明をします。
使用する関数はワークシート関数と同様となり、構文も同じです。
なお、和暦に変換するDATESTRINGはサポートされていませんので、サンプルから除外しています。
関数版と同じく以下のシリアル値と表を用意し、該当する項目へ処理結果を出力していきたいと思います。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub シリアル値から日付文字を出力する()
'小数点を含むためDouble型で定義します。
Dim doubSirial As Double
'シリアル値を変数に代入します。
doubSirial = Range("B1").Value
Range("B4").Value = Year(doubSirial) 'シリアル値を年に変換します。
Range("B5").Value = Month(doubSirial) 'シリアル値を月に変換します。
Range("B6").Value = Day(doubSirial) 'シリアル値を日付に変換します。
Range("B7").Value = Weekday(doubSirial) 'シリアル値を曜日に変換します。
Range("B8").Value = Hour(doubSirial) 'シリアル値を時刻に変換します。
Range("B9").Value = Minute(doubSirial) 'シリアル値を時刻の分に変換します。
Range("B10").Value = Second(doubSirial) 'シリアル値を時刻の秒に変換します。
End Sub
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを実行する
VBAを実行してみましょう。
シリアル値がそれぞれの日付関数に準じた値に変換され出力されましたね。
VBAの説明
VBAについて説明をします。
小数点を含むためDouble型で定義します。
Dim doubSirial As Double
シリアル値を変数に代入します。
doubSirial = Range("B1").Value
それぞれの日付関数に準じてシリアル値が変換され、セルへ出力します。
Range("B4").Value = Year(doubSirial) 'シリアル値を年に変換します。
Range("B5").Value = Month(doubSirial) 'シリアル値を月に変換します。
Range("B6").Value = Day(doubSirial) 'シリアル値を日付に変換します。
Range("B7").Value = Weekday(doubSirial) 'シリアル値を曜日に変換します。
Range("B8").Value = Hour(doubSirial) 'シリアル値を時刻に変換します。
Range("B9").Value = Minute(doubSirial) 'シリアル値を時刻の分に変換します。
Range("B10").Value = Second(doubSirial) 'シリアル値を時刻の秒に変換します。
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・VBAでシリアル値を日付に変換する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す