更新日:、 作成日:
VBA DateDiff 関数:日数を計算する
はじめに
Excel VBA マクロの DateDiff 関数から日数を計算する方法を紹介します。
DateDiff 関数は、日付の期間を日数や時間で返します。
DateDiff("d", 日付1, 日付2) のようにして、日数を取得できます。
DateDiff("n", 時刻1, 時刻2) のようにして、分数を取得できます。
経過した月数や日数、時間などを取得したいときに使用します。
日付の期間を計算するには「日付を計算する」をご覧ください。
DateDiff 関数の引数と戻り値
DateDiff(単位, 開始日時, 終了日時)
開始日時から終了日時までの期間を指定した単位で取得します。
引数「単位」 | 期間の単位を表す文字を指定します。 |
引数「開始日時」 | 期間の開始となる日時を指定します。 |
引数「終了日時」 | 期間の終了となる日時を指定します。 |
戻り値の型 | 数値型 (Long) |
引数「単位」
単位の文字 | 説明 |
yyyy | 年 |
m | 月 |
d | 日 |
h | 時 |
n | 分 |
s | 秒 |
q | 四半期 |
y | 通年での日数 |
w | 曜日 |
ww | 週 |
スポンサーリンク
解説
引数「単位」が d (日) なら、次の結果を返します。
開始日時 | 終了日時 | 結果 |
1/2 | 1/3 | 1 |
1/2 | 1/2 | 0 |
1/2 | 1/1 | -1 |
同じ日付のときは 1 日も経過していないので 0 を返します。
引数「単位」が w (曜日) なら、引数「開始日時」の曜日が次の日から、引数「終了日時」までに何回あるかを返します。
引数「単位」が ww (週) なら、日曜日が引数「開始日時」の次の日から、引数「終了日時」までに何回あるかを返します。
引数「単位」が q (四半期) なら、引数「開始日時」の次の日から、引数「終了日時」までに 1月1日 、4月1日 、7月1日 、10月1日 が何回あるかを返します。
演算子で計算
「演算子」を使用して 日付 - 日付 で日数を、時刻 - 時刻 で時間を計算できます。
日付を計算するには「日付を計算する」をご覧ください。
Excel の関数で計算
Excel の「エクセル 日付の日数計算をする」の方法で、休日を除いた日数など好きな日数を取得できます。
Excel の関数を使用するには「WorksheetFunction」をご覧ください。
使用例
DateDiff 関数の使用例を紹介します。
日数や時間を取得する
日数や時間を取得します。
Dim l As Long
l = DateDiff("yyyy", CDate("2013/1/1"), CDate("2014/12/31")) ' 年
Debug.Print(l) ' 1
l = DateDiff("m", CDate("2013/1/1"), CDate("2013/3/31")) ' 月
Debug.Print(l) ' 2
l = DateDiff("d", CDate("2013/1/1"), CDate("2013/1/7")) ' 日
Debug.Print(l) ' 6
l = DateDiff("h", CDate("2013/1/1"), CDate("2013/1/1 1:00:00")) ' 時
Debug.Print(l) ' 1
l = DateDiff("n", CDate("2013/1/1"), CDate("2013/1/1 1:00:00")) ' 分
Debug.Print(l) ' 60
l = DateDiff("s", CDate("2013/1/1"), CDate("2013/1/1 1:00:00")) ' 秒
Debug.Print(l) ' 3600
演算子で日数を取得する
「演算子」を使用して、日数や時間を取得できます。
Dim 日数 As Long
日数 = CDate("2013/1/1") - CDate("2013/1/1")
Debug.Print(日数) ' 0
日数 = CDate("2013/1/2") - CDate("2013/1/1")
Debug.Print(日数) ' 1
日数 = CDate("2013/1/8") - CDate("2013/1/1")
Debug.Print(日数) ' 7
Dim 時間 As Date
時間 = CDate("10:0:0") - CDate("1:0:0")
Debug.Print(時間) ' 9:00:00
時間 = CDate("10:0:0") - CDate("0:1:0")
Debug.Print(時間) ' 9:59:00
時間 = CDate("10:0:0") - CDate("0:0:1")
Debug.Print(時間) ' 9:59:59
休日を除いた日数を取得する
Excel の「エクセル 日付の日数計算をする」の方法で、休日を除いた日数など好きな日数を取得できます。
Excel の関数を使用するには「WorksheetFunction」をご覧ください。
Dim d1 As Date
Dim d2 As Date
d1 = "2013/1/1"
d2 = "2013/1/7"
' 休日を除いた日数
Dim l As Long
l = WorksheetFunction.NetworkDays_Intl(d1, d2)
Debug.Print(l) ' 5
スポンサーリンク