関数・メソッド

日付や時刻の間隔を計算する【DateDiff関数】【ExcelVBA】

構文

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]

interval・・・・・・・・時間単位を表す文字列※下記参照
date1・・・・・・・・計算したい開始日・時間
date2・・・・・・・・計算したい終了日・時間
firstdayofweek・・・・週の始まりの曜日を表す定数を指定【省略可能】※下記参照
firstweekofyear・・・・年度の第一週を表す定数を指定【省略可能】※下記参照
引数intervalに設定する値
設定値内容
yyyy
q四半期
m
y年間通算日
d
w週日
ww
h
n
s
引数firstdayofweekに設定する定数
定数内容
vbUseSystem0各言語対応(NLS API)の設定値
vbSunday1日曜【規定値】
vbMonday2月曜
vbTuesday3火曜
vbWednesday4水曜
vbThursday5木曜
vbFriday6金曜
vbSaturday7土曜
引数firstweekofyearに設定する定数
定数内容
vbUseSystem0各言語対応(NLS API)の設定値
vbFirstJan111 月 1 日を含む週を年度の第 1 週とする【規定値】
vbFirstFourDays27 日のうち少なくとも 4 日が新年度に含まれる週を年度の第 1 週とする
vbFirstFullWeek3全体が新年度に含まれる最初の週を、年度の第 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関数はありません。

関連記事

コメント

タイトルとURLをコピーしました