今回はDateDiff関数の使い方と、サンプルとして2つの日付の日数分ループする方法についてご説明します。
DateDiff関数は指定した2つの日付の日数や月数、年数を取得するために使用します。
日付を操作する場合に、日数分ループするなどによく使用します。
日付の指定方法は「IsDate」「DateValue」「DateSerial」「DateAdd」「DateDiff」と色々ありますが、今回はこの「DateDiff関数」を使用した方法になります。
その他の日付や時間の操作は次の記事をご覧ください。
- IsDate関数の使い方と日付に変換する方法
- DateSerial関数の使い方と月初、月末の指定
- DateValue関数、TimeValue関数の使い方と日付、時刻の変換方法
- DateAdd関数の使い方と何日(時間)後を取得する方法
1.DateDiff関数の使い方
DateDiff関数は指定した2つの日付の間隔を返します。
引数や、定数がたくさんありますが、基本的に使用する分には後ろの2つの引数は、使用しなくても十分使用できます。
計算時に混乱しがちですが、指定した日付の日数計算は「date1」は1日に含まれません。
2018/1/1と2018/1/31を算出すると31日と思いがちですが、算出結果は30日になります。
DateDiff関数は次のように記述します。
DateDiff(interval,date1,date2[,firstdayofweek][,firstweekofyear])
引数一覧です。
引数 | 省略 | 説明 |
interval | 必須 | date1とdate2の間隔を計算するための単位を指定します。 |
date1 | 必須 | 間隔を計算する日付を指定します。 |
date2 | 必須 | 間隔を計算する日付を指定します。 |
firstdayofweek | 省略可能 | 週の始まりの曜日を指定します。 |
firstweekofyear | 省略可能 | 年度の第1週を指定します。 |
「interval」の設定値一覧です。
設定値 | 説明 |
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 年間通算日 |
d | 日 |
w | 週日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |
「firstdayofweek」の定数一覧です。
定数 | 値 | 説明 |
vbUseSystem | 0 | 各国語対応APIの設定値 |
vbSunday | 1 | 日曜(既定値) |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
「firstweekofyear」の定数一覧です。
定数 | 値 | 説明 |
vbUseSystem | 0 | 各国語対応APIの設定値 |
vbFirstJan1 | 1 | 1月1日を含む週を年度の第1週とします |
vbFirstFourDays | 2 | 7日のうち少なくとも4日が新年度に含まれる週を年度の第1週とします |
vbFirstFullWeek | 3 | 全体が新年度に含まれる最初の週を年度の第1週とします |
2.DateDiff関数のサンプルコード
基本的なサンプルコードと、2つの指定した日付の日数分をループするサンプルコードです。
基本的なサンプルコード
基本的なコードです。
日付は「Date1 = #2018/1/1#」と指定しても同じ結果になります。
Sub Sample1()
Dim Date1 As Date
Dim Date2 As Date
Date1 = "2018/1/1"
Date2 = "2018/4/30"
Debug.Print DateDiff("yyyy", Date1, Date2) '0年
Debug.Print DateDiff("m", Date1, Date2) '3ヵ月
Debug.Print DateDiff("d", Date1, Date2) '119日
Debug.Print DateDiff("ww", Date1, Date2) '17週
End Sub
![](https://officedic.com/wp-content/uploads/2019/07/サンプル2-3.png)
日付の間隔をループするサンプルコード
指定した2つの日付の日数分ループして、DateAdd関数で加算してセルに出力します。
日付のリスト作成などに使用します。
この時0から始める事で指定した日も取得出来ます。
「DateAdd関数」の使い方は「DateAdd関数の使い方」をご覧ください。
Sub Sample2()
Dim Date1 As Date
Dim Date2 As Date
Dim i As Long
Date1 = "2018/1/1"
Date2 = "2018/4/30"
For i = 0 To DateDiff("d", Date1, Date2)
Cells(i + 1, 1) = DateAdd("d", i, Date1)
Next i
End Sub
![](https://officedic.com/wp-content/uploads/2019/07/サンプル1-3.png)