まさ工房

ExcelVBAとAcessDBを利用した業務支援ツールを作成する工房です

【Excelマクロ・VBA】DateDiff関数で指定日までの日数を取得するにはどうすればいいの?使い方を教えて!

       f:id:m_kbou:20190611140140p:plain

DateDiff関数は、2つの日付に対する期間(間隔)を計算します。指定の日時から経過した日や時間を取得したいときに使用します。使い方について説明します。

 

【目次】

 

構文

DateDiff関数の記述方法は、以下の通りとなります。

=======================================================================

DateDiff(”[単位], [開始日時], [終了日時]

=======================================================================

[説明]:

[単位]には、期間の単位を表す文字を指定します。[単位]は以下表のいづれかを指定します。[開始日付]には、期間の開始となる日時を指定します。[終了日付]には、期間の終了となる日時を指定します。いづれも「”」(ダブルクォーテーション)で囲みます。内容を纏めると、「[開始日付]から[終了日付]までの期間を、[単位]で指定した単位で値を返して下さい。」との意味になります。

f:id:m_kbou:20190611140202p:plain

[記述例]:

DateDiff("yyyy", "2019/1/1", "2020/1/1")
DateDiff("m", "2019/1/1", "2020/1/1")
DateDiff("d", "2019/1/1", "2020/1/1")
DateDiff("h", "2019/1/1", "2020/1/1")
DateDiff("n", "2019/1/1", "2020/1/1")
DateDiff("s", "2019/1/1", "2020/1/1")

 

使い方

使い方について、具体的に説明していきます。

期間を年で返す

開始日時と終了日時の期間を年数で返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「yyyy」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateDiff("yyyy", "2019/1/1", "2020/1/1")
End Sub

-------------------------------------------------

内容は、「開始日時:2019/1/1と終了日付:2020/0/1/1の期間を年数で返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、期間が1年であるため「1」がMsgBoxに表示されます。

f:id:m_kbou:20190611140215p:plain

期間を年数で返す方法についての説明は以上です。

 

期間を月で返す

開始日時と終了日時の期間を月数で返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「m」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateDiff("m", "2019/1/1", "2020/1/1")
End Sub

-------------------------------------------------

内容は、「開始日時:2019/1/1と終了日付:2020/0/1/1の期間を月数で返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、期間が12ヵ月であるため「12」がMsgBoxに表示されます。

f:id:m_kbou:20190611140228p:plain

期間を月数で返す方法についての説明は以上です。

 

期間を日で返す

開始日時と終了日時の期間を日数で返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「d」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateDiff("d", "2019/1/1", "2020/1/1")
End Sub

-------------------------------------------------

内容は、「開始日時:2019/1/1と終了日付:2020/0/1/1の期間を日数で返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、期間が365日であるため「365」がMsgBoxに表示されます。

f:id:m_kbou:20190611140258p:plain

期間を日数で返す方法についての説明は以上です。

 

期間を時間で返す

開始日時と終了日時の期間を時間で返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「h」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateDiff("h", "2019/1/1", "2020/1/1")
End Sub

-------------------------------------------------

内容は、「開始日時:2019/1/1と終了日付:2020/0/1/1の期間を時間で返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、期間が8760時間であるため「8760」がMsgBoxに表示されます。

f:id:m_kbou:20190611140325p:plain

期間を時間で返す方法についての説明は以上です。

 

期間を分で返す

開始日時と終了日時の期間を分数で返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「n」を記述します。(「m」と間違えやすいので注意して下さい)

-------------------------------------------------

Sub サンプル()
    MsgBox DateDiff("n", "2019/1/1", "2020/1/1")
End Sub

-------------------------------------------------

内容は、「開始日時:2019/1/1と終了日付:2020/0/1/1の期間を分数で返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、期間が525600分であるため「525600」がMsgBoxに表示されます。

f:id:m_kbou:20190611140355p:plain

期間を分数で返す方法についての説明は以上です。

 

期間を秒で返す

開始日時と終了日時の期間を秒数で返す方法について説明します。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

単位を表す文字に「s」を記述します。

-------------------------------------------------

Sub サンプル()
    MsgBox DateDiff("s", "2019/1/1", "2020/1/1")
End Sub

-------------------------------------------------

内容は、「開始日時:2019/1/1と終了日付:2020/0/1/1の期間を秒数で返し、MsgBoxで表示して下さい。」との意味になります。

[実行例]:

結果は、期間が31536000秒であるため「31536000」がMsgBoxに表示されます。

f:id:m_kbou:20190611140423p:plain

期間を秒で返す方法についての説明は以上です。

 

おわりに

今回は、DateDiff関数の使い方について説明しました。類似の関数にDateAdd関数(指定日から何日前・何日後を表示)があります。こちらも合わせて覚えておくと、データ処理の幅が広がります。