【EXCEL VBA | DateSerial関数 】”年” ”月” ”日”が別々のセルに入力されている表から日付データ(シリアル値)を作成する

スポンサーリンク

DateSerial関数

年月日の数字から日付を作ることが出来ます。

”年”と”月”と”日”が別々のセルに入力されているような表から、日付形式のデータ(シリアル値)を取得したいときなどに使います(^o^)

構文

DataSerial(年, 月, 日)

年・月・日には、年なら2021とか、月なら1~12、日なら1~30などの数値を指定します。

月や日に、ありえない数値(2月に30日など)入れた場合でも、EXCELが適切に処理してくれます。


EXCELの日付のシリアル値は、1900年1月1日から、9999年12月31日までです。その範囲を超えた日付は扱えないので注意してください。


実行サンプル

では早速実行サンプルです。

次のような一覧を用意しました。

A列に年、B列に月、C列に日の数値を入力しています。その3列を利用してD列にDataSerialを使って日付データを作成したいと思います。

先にコードです。

Sub sample()

    'シートの指定
    Dim sheet As Worksheet
    Set sheet = ActiveSheet
    
    'ループ用の変数
    Dim i As Long
  
   'D列に日付を入力する
    For i = 2 To 6
    
        With sheet
            .Cells(i, 4) = DateSerial(.Cells(i, 1), .Cells(i, 2), .Cells(i, 3))
        End With
        
    Next
    
End Sub

実行すると次のような結果になります。

2行目・3行目は、問題ない指定なのでD列に日付がちゃんと入力されました。

4行目以降は、月や日付にありえない数値を指定していますが、D列にはそれを加味した結果が表示されていることが分かります。

4行目・・・2月に28日までしか無いため、2日後の3月2日が表示されている

5行目・・・14月は無いため、12月から2ヶ月後の2月が表示されている

6行目・・・0日は無いため、1日前の5月31日が表示されている