サイトについて      連絡先   検索

VBA DateDiff 関数

はじめに

Excel VBA マクロの DateDiff 関数を紹介します。

DateDiff 関数は、2 つの日時の間隔を返します。

指定の日時から経過した日や時間を取得したいときに使用します。

  • 目次
    • 構文
    • 解説
    • 使用例

構文

DateDiff(単位, 開始日時, 終了日時)
開始日時から終了日時までの期間を指定した単位で取得します。

引数「単位」期間の単位を表す文字を指定します。
引数「開始日時」期間の開始となる日時を指定します。
引数「終了日時」期間の終了となる日時を指定します。
戻り値の型数値型 (Integer)

引数「単位」

単位の文字 説明
yyyy
m
d
h
n
s
q四半期
y通年での日数
w曜日
ww

解説

引数「単位」がd(日)のとき次の結果を返します。

開始日時 終了日時 結果
1/11/21
1/11/10
1/21/1-1

引数「単位」がw(曜日)のとき、引数「開始日時」の曜日が次の日から、引数「終了日時」までに何回あるかを返します。

引数「単位」がww(週)のとき、日曜日が引数「開始日時」の次の日から、引数「終了日時」までに何回あるかを返します。

引数「単位」がq(四半期)のとき、引数「開始日時」の次の日から、引数「終了日時」までに1月1日4月1日7月1日10月1日が何回あるかを返します。

関数を使わなくても日時 - 日時で差を求められます。

使用例


Dim d1 As Date
Dim d2 As Date
d1 = "2013/1/1"
d2 = "2013/1/8"

Debug.Print(DateDiff("d", d1, d2)) ' 7
Debug.Print(DateDiff("d", d2, d1)) ' -7

d1 = "1:2:3"
d2 = "2:2:3"
Debug.Print(DateDiff("h", d1, d2)) ' 1
Debug.Print(DateDiff("n", d1, d2)) ' 60
Debug.Print(DateDiff("s", d1, d2)) ' 3600

関数を使わないで間隔を取得する。


Dim d1 As Date
Dim d2 As Date
d1 = "2013/1/1"
d2 = "2013/1/8"

Dim 間隔 As Date
Dim d As Date

間隔 = d2 - d1 ' 7 日
d = CDate("2013/1/8") + 間隔
Debug.Print(d) ' 2013/01/15

d1 = "1:02:03"
d2 = "2:02:03"
間隔 = d2 - d1 ' 1 時間
d = CDate("1:00:00") + 間隔
Debug.Print(d) ' 2:00:00
  • 目次
    • 構文
    • 解説
    • 使用例