VBAで年月日の計算をする方法!基本の加減算を解説します!

エクセルで年月日の計算をしたいことってありますよね。

この日から○○日後はいつだろう?というときの加算。

あの日からこの日までの日数は何日だろう?というときの減算。

主に計算したいのはこういうケースかと思います。

そこでこの記事では『VBAで年月日の加減算をする方法』を解説します。

ちなみに、減算する場合の大半は誕生日からの年数=年齢を計算するケースかと思いますが、その方法についてはこちらの記事で詳しく説明していますので、ぜひご覧くださいね。

1.VBAで日付に時間を加算する場合

こんにちは。エクセルマン・ブリーダーのしもむぎ(@re_znd13)です。

まずは日付の加算について取り上げます。

日付と任意の時間間隔を加算するには、DATEADD関数を用います。構文は以下の通り。

DateAdd(interval, number, date) 

intervalは時間間隔を表す文字列式です。引数は以下の通り。

例えば1週間という場合にはinterval引数に”ww”、numberに1としてあげます。

yyyy   年
 q     四半期
 m     月
 y     通年での日数
 d     日
 w     平日
 ww    週
 h     時
 n     分
 s     秒

以下がVBAでのコード記述例です。1998/3/18に1週間を加算しています。結果として1週間後の日付が表示されました。

Sub 日付足し算()
Dim d1 As String

d1 = DateAdd("ww", 1, "1998/3/18")

MsgBox d1

End Sub

2.VBAで日付同士を減算する場合

次に日付の減算について取り上げます。

日付同士を減算する場合、DATEDIFF関数を用います。構文は以下の通り。

 DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] ) 

date1とdate2は日付、firstdayofweekとfirstdayofyearは省略可能です。

intervalは時間間隔を表す文字列式です。引数は以下の通り(DATEADD関数と同じです)。

例えば年数を答えとした場合、interval引数に”yyyy”としてあげます。

yyyy   年
 q     四半期
 m     月
 y     通年での日数
 d     日
 w     平日
 ww    週
 h     時
 n     分
 s     秒

以下がVBAコードの記述例です。1991/3/25から2020/3/25までの年数を出してみました。

Sub 日付引き算()
Dim d2 As String

d2 = DateDiff("yyyy", "1991/3/25", "2020/3/25")

MsgBox d2

End Sub

3.まとめ

この記事では『VBAで年月日の加減算をする方法』として、加算と減算の方法を解説しました。

一般的な年月日の計算は今回紹介した基本的な2つの方法、年齢計算は満年齢・学齢・数え年と複雑なため別記事の年齢計算の方法というように使い分けることをオススメします。