Excel。VBA。日付計算なら、DateAdd関数をつかうと便利です
<DateAdd関数>
Excelにはなく、Excel VBAにあるDateAdd関数は日付計算をするのに便利な関数です。
次の表を用意しています。
B1に日付が入力されています。
B3には、B1の日付の3日後。
B4には、B1の3か月後の日付を表示したいわけです。
B3は3日後なので、単純に「+3」でいいのですが、B4の3か月後というのは、単純な足し算というわけにはいきません。
月に「+3」するわけにはいきません。
そこで、EDATE関数をつかうなどする必要があるわけです。
例えば、次のようなExcel VBAのプログラム文を用意しました。
Sub 日付計算()
Dim input_date As Date
input_date = Range("b1")
Range("b3") = input_date + 3
Range("b4") = "=edate(b3,3)"
End Sub
B4には、Formulaプロパティで通常のEDATE関数の数式を設定しています。
では、実行してみましょう。
B3の日付はスムーズに3日後を表示していますが、3か月後は、EDATE関数によって算出されているものの、シリアル値で算出されてしまっています。
これを日付形式に変更する必要があります。
これでは、少し面倒ですね。
そこで、DateAdd関数をつかって、プログラム文を変更してみます。
Sub 日付計算()
Dim input_date As Date
input_date = Range("b1")
Range("b3") = DateAdd("d", 3, input_date)
Range("b4") = DateAdd("m", 3, input_date)
End Sub
では、実行してみましょう。
B3の結果は同じですが、3か月後は明らかに異なっています。
シリアル値で算出されていません。
日付形式で算出されています。
DateAdd関数は、引数に、加算方式が含まれています。
その加算方式を設定するだけで、月であっても日であっても年であっても、数式の形式自体は同じで済みます。
EDATE関数を覚えるなど、複数の関数を使い分ける必要はありません。