教えて!ExcelVBA!

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

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

f:id:m_kbou:20200420121735p:plain

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

 

 

構文

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

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

 

使い方

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

期間を年で返す

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

[プログラミング例]:

単位を表す文字に「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関数(指定日から何日前・何日後を表示)があります。こちらも合わせて覚えておくと、データ処理の幅が広がります。