教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

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

f:id:m_kbou:20200420121735p:plain

 

 

構文

記述方法は以下の通りとなります。

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

[説明]:

指定した開始日から終了日までの期間を指定した単位値で返します。

[単位] 期間を表す単位文字を記述します。
具体的には以下表の単位文字いずれかを記述します。
※「”」(ダブルクォーテーション)で囲みます。
[開始日時] 開始日時を記述します。
※「”」(ダブルクォーテーション)で囲みます。
[終了日時] 終了日時を記述します。
※「”」(ダブルクォーテーション)で囲みます。
単位文字 単位
yyyy

[記述例]:

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")

 

使い方

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

期間を年で返す

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

[プログラミング例]:

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

Sub サンプル()

  MsgBox DateDiff("yyyy", "2019/1/1", "2020/1/1")

End Sub

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

f:id:m_kbou:20210423080726p:plain

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

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423080739p:plain

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

f:id:m_kbou:20210423080753p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

期間を月で返す

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

[プログラミング例]:

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

Sub サンプル()

  MsgBox DateDiff("m", "2019/1/1", "2020/1/1")

End Sub

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

f:id:m_kbou:20210423080859p:plain

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

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423080913p:plain

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

f:id:m_kbou:20210423080924p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

期間を日で返す

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

[プログラミング例]:

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

Sub サンプル()

  MsgBox DateDiff("d", "2019/1/1", "2020/1/1")

End Sub

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

f:id:m_kbou:20210423081018p:plain

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

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423081032p:plain

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

f:id:m_kbou:20210423081043p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

期間を時間で返す

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

[プログラミング例]:

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

Sub サンプル()

  MsgBox DateDiff("h", "2019/1/1", "2020/1/1")

End Sub

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

f:id:m_kbou:20210423081149p:plain

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

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423081201p:plain

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

f:id:m_kbou:20210423081213p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

期間を分で返す

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

[プログラミング例]:

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

Sub サンプル()

  MsgBox DateDiff("n", "2019/1/1", "2020/1/1")

End Sub

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

f:id:m_kbou:20210423081322p:plain

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

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423081334p:plain

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

f:id:m_kbou:20210423081345p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

期間を秒で返す

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

[プログラミング例]:

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

Sub サンプル()

  MsgBox DateDiff("s", "2019/1/1", "2020/1/1")

End Sub

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

f:id:m_kbou:20210423081457p:plain

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

[実行例]:

①<実行>ボタンをクリックします。

f:id:m_kbou:20210423081511p:plain

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

f:id:m_kbou:20210423081522p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

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

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

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