構文
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関数はありません。
コメント