ヘルプの森~Excel・Access・Office全般ヘルプデスクサイト

No.001

2つの日付の期間を求める 《DateDiff》

2003/2007/2010/2013/2016/2019

2つのフィールドに入力されている日付の期間を求める場合に、一番簡単な方法は引き算です。
例えば、[開始日]フィールドと[終了日]フィールドとの経過日数を求めるとします。

  経過日数: [終了日]-[開始日]

ただ、日付+時刻が入っているデータの場合は、小数値となることがありますので、引き算の答えを Int 関数を使用して切り捨てる必要があります。

日付データで期間の単位が「日」であれば、ただ引き算でよいですが、求める単位が「年」の場合、それぞれの日付の年を Year 関数で求め、その年のデータの引き算でも OK です。
何かと工夫して期間を求めることはできますが、日付の期間と言えば、DateDiff 関数(式のカテゴリ: 日付/時刻)がいくつもの単位に対応でき、簡潔で分かりやすく求めることができます。
2つの日付の経過日数を求める場合は、次の式となります。
引き算と同じ結果となります。

  経過日数: DateDiff("d", [開始日], [終了日])

[開始日]フィールドから本日までの経過年数を求める場合は、次のような式となります。

  経過年数: DateDiff("yyyy", [開始日], Date())

ポイントは1つ目の引数、求める期間の単位を指定することができます。
DateDiff 関数を使用する際、3つの引数の設定で求めるケースが多いと思いますが、実は、引数は全部で5つあり、週単位の間隔を求める場合に週の始まりの曜日を指定するなど、細かい設定があります。
わかりやすい関数で、かついろいろな対応ができますので、存在を知っているといいですね。
引数など、詳細は下記<ヘルプmemo>をご確認ください。

Excel の DATEDIF 関数 とは、関数名も引数の順番も違いますので、ご注意ください。

ヘルプmemo

<DateDiff 関数>(式のカテゴリ: 日付/時刻)
指定した2つの日付の時間間隔数を表すバリアント型の値を返します。

構文:
DateDiff(interval, date1, date2 [, firstdayofweek] [, firstweekofyear])
引数:
・[interval] ...2つの日付の時間間隔の計算に使用する時間単位を表す文字列式を指定
"yyyy" ...年
"q" ...四半期
"m" ...月
"y" ...年間通算日
"d" ...日
"w" ...週日
"ww" ...週
"h" ...時
"n" ...分
"s" ...秒
・[date1] ...開始日となるフィールドまたは日付を指定
・[date2] ...終了日となるフィールドまたは日付を指定
・[firstdayofweek] ...週の始まりの曜日を表す定数または値を指定 (省略可)
vbUseSystem または 0 ... NLS API の設定値を使用
vbSunday または 1 ...日曜日(既定値)
vbMonday または 2 ...月曜日
vbTuesday または 3 ...火曜日
vbWednesday または 4 ...水曜日
vbThursday または 5 ...木曜日
vbFriday または 6 ...金曜日
vbSaturday または 7 ...土曜日
・[firstweekofyear] ...年度の第1週を表す定数または値を指定 (省略可)
vbUseSystem または 0 ... NLS API の設定値を使用
vbFirstJan1 または 1 ...1月1日を含む週(既定値)
vbFirstFourDays または 2 ...新しい年の少なくとも4日間を含む最初の週
vbFirstFullWeek または 3 ...全体が新しい年に含まれる最初の週
ヒント:
・引数[interval]の「"y"」と「"d"」の結果はいずれも同じで、2つの日付間の日数を返します。
・引数[interval]の「"w"」は、2つの日付間の週数を返します。
・引数[interval]の「"ww"」は、2つの日付間の日曜日の数がカウントされます。

詳しくはMicrosoftのサポート ページ「DateDiff 関数」をご参照ください。

関連ヘルプ

数値の先頭に0を付け桁を揃えて表示する(ExcelならTEXT関数のような) 《Format》
特定の文字より左部分にある文字列を取り出す 《Left・InStr》
条件に一致するレコードの件数を求める(ExcelならCOUNTIF関数のような) 《Dcount》
文字列を半角または全角にする(ExcelのASC/JIS関数のような) 《StrConv》
DCount、DLookUpなど定義域集合関数について
特定の文字より右部分にある文字列を取り出す 《Right・Instr・Len》