構文
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
interval・・・・・・・・時間単位を表す文字列※下記参照
date1・・・・・・・・・計算したい開始日・時間
date2・・・・・・・・・計算したい終了日・時間
firstdayofweek・・・・週の始まりの曜日を表す定数を指定【省略可能】※下記参照
firstweekofyear・・・・年度の第一週を表す定数を指定【省略可能】※下記参照
date1・・・・・・・・・計算したい開始日・時間
date2・・・・・・・・・計算したい終了日・時間
firstdayofweek・・・・週の始まりの曜日を表す定数を指定【省略可能】※下記参照
firstweekofyear・・・・年度の第一週を表す定数を指定【省略可能】※下記参照
| 引数intervalに設定する値 | |
| 設定値 | 内容 |
| yyyy | 年 |
| q | 四半期 |
| m | 月 |
| y | 年間通算日 |
| d | 日 |
| w | 週日 |
| ww | 週 |
| h | 時 |
| n | 分 |
| s | 秒 |
| 引数firstdayofweekに設定する定数 | ||
| 定数 | 値 | 内容 |
| vbUseSystem | 0 | 各言語対応(NLS API)の設定値 |
| vbSunday | 1 | 日曜【規定値】 |
| vbMonday | 2 | 月曜 |
| vbTuesday | 3 | 火曜 |
| vbWednesday | 4 | 水曜 |
| vbThursday | 5 | 木曜 |
| vbFriday | 6 | 金曜 |
| vbSaturday | 7 | 土曜 |
| 引数firstweekofyearに設定する定数 | ||
| 定数 | 値 | 内容 |
| vbUseSystem | 0 | 各言語対応(NLS API)の設定値 |
| vbFirstJan1 | 1 | 1 月 1 日を含む週を年度の第 1 週とする【規定値】 |
| vbFirstFourDays | 2 | 7 日のうち少なくとも 4 日が新年度に含まれる週を年度の第 1 週とする |
| vbFirstFullWeek | 3 | 全体が新年度に含まれる最初の週を、年度の第 1 週とする |
DateDiff関数のサンプルコード
Public Sub sample()
'■標準の使い方(日付)
Debug.Print DateDiff("d", "2021/01/01", "2021/01/02") '1 日
Debug.Print DateDiff("yyyy", "2021/01/01", "2023/01/01") '2 年間
Debug.Print DateDiff("q", "2021/01/01", "2021/04/01", vbSunday, vbFirstJan1)
'■標準の使い方(時刻)
Debug.Print DateDiff("h", "10:00:00", "12:00:00") '2 時間
Debug.Print DateDiff("n", "10:00:00", "12:00:00") '120 分
Debug.Print DateDiff("s", "10:00:00", "12:00:00") '7200 秒
'■注意必要
Debug.Print DateDiff("yyyy", "2021/01/01", "2021/12/31") '実質1年間だが、年の間隔の算出する為、0となる
Debug.Print DateDiff("q", "2021/01/01", "2021/07/01") '3クォーターの始まりだが差だけ取得するため、2となる
Debug.Print DateDiff("m", "2021/01/01", Now) '現時点では8月だが、1月からの間隔は7カ月
'■イレギュラー対応(渡す引数が形式が違ってもデータを取得)
Debug.Print DateDiff("m", "2021/01/01 12:00:00", "2021/08/09") '7
Debug.Print DateDiff("m", #1/1/2021#, "2021/08/09") '7
Debug.Print DateDiff("m", #1/1/2021#, "2022/01/01") '12
'■その他
Debug.Print DateDiff("s", "2021/08/09", Now) '現時点の時刻と比較も可能。
Debug.Print DateDiff("d", "21/8/9", "21/1/1") '-220 開始日のが過去の場合はマイナスで表示する
End Sub
注意点
- あくまでも間隔だけの値の取得になる為、現年齢の算出はint関数で応用した方が早いです。
- ワークシート関数のDateDif関数とはスペルも引数も違います。
- VBAで使用できるWorksheetFunctionにはDateDif関数はありません。



コメント