Excelシリアル値を日付に変換する方法!関数の他VBAで処理も!

シリアル値を日付に変換したいときはないでしょうか。

けど、そんな中で悩むことは、

・関数でシリアル値を日付に変換したいが方法がよくわからない
・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はサポートされていませんので、サンプルから除外しています。

関数版と同じく以下のシリアル値と表を用意し、該当する項目へ処理結果を出力していきたいと思います。

タカヒロ
タカヒロ
使用している関数以外の日付関連関数について別記事にまとめていますので、よろしければご参照ください。

【Excel VBA】日付の扱い方!取得/加減算/書式変換/比較/エラー回避まで!

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でシリアル値を日付に変換する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です