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

No.007

2つの日付の期間が何年かを求める 《DATEDIF》

2003/2007/2010/2013/2016/2019

2つの日付の期間を求めるには、DATEDIF 関数(分類: 日付/時刻)を使います。
そこそこ使われる関数なのですが、DATEDIF 関数 は[関数の貼り付け]ダイアログ ボックスの一覧にはありませんので、式を手入力しなければなりません。

例えば、セルA2に「2000/4/1」、セルB2に「2011/4/1」と入力されていて、この2つの日付の期間が何年あるかを求めたいとします。

DATEDIF 関数 は3つの引数を持ちます。1つ目の引数に開始日、2つめの引数に終了日、3つ目の引数には単位を指定します。

3つ目の引数について、今回は何年あるかを求めるので、最後の引数には年単位である指定をします。
単位は、ダブルクォーテーションで囲んでアルファベットで指定します。
年単位の場合は「"Y"」と指定し、全体の式は次のようになります。

  =DATEDIF(A2,B2,"Y")

DATEDIF関数

答えは11年です。関数の構造としてはわかりやすいですね。

ここで、DATEDIF 関数 の特徴を押さえておきましょう。
DATEDIF 関数 では、丸1年を経過してはじめて1年とされます。つまり、
セルA2に「2000/4/2」と入っていた場合、まだ丸11年は完了していませんので、答えは10年となります。

しかしお仕事で求める内容によっては、DATEDIF関数ではなく、年同士の数値の引き算で11年という答えを求めたい場合もあります。
その場合の式は、YEAR関数で日付の年を求めて引き算します。

  =YEAR(B2) - YEAR(A2)

どちらのケースであるのかを確認して関数を使いましょう。

さて、引数を少しアレンジをしてみましょう。
例えば「2000/1/1」から今日現在までが何か月あったかを求める場合、終了日に今日を求める TODAY 関数 を指定します。

  =DATEDIF("2000/1/1",TODAY(),"M")

3つ目の引数については、下記の<ヘルプmemo>をご覧ください。

この DATEDIF 関数 が、[関数の挿入]ダイアログ ボックス の一覧に含まれないのは、他の表計算ソフトとの互換性を保つために用意された関数であるからです。
一覧に掲載しようとすると、いくつかの問題が発生するため、長年はずされています。
いつか、一覧に表示されるようになるといいですね。

ヘルプmemo

<DATEDIF 関数>(関数の分類: 日付/時刻関数)
開始日から終了日までの期間を単位に合わせて返します。

数式:
=DATEDIF(開始日, 終了日, 単位)
引数:
・[開始日] ...期間の開始日を示す文字列、シリアル値またはセル参照
・[終了日] ...期間の終了日を示す文字列、シリアル値またはセル参照
・[単位] ...戻り値の単位を文字列で指定
"Y" ...期間内の満年数
"M" ...期間内の満月数
"D" ...期間内の満日数
"MD" ...1ヶ月未満の日数
"YM" ...1年未満の月数
"YD" ...1年未満の日数
twitter hatena line pocket

関連ヘルプ

7桁で入力されている郵便番号のデータにハイフォンを挿入したい 《REPLACE》
左から(右から・途中から)決まった文字数の文字列を取り出す 《LEFT・RIGHT・MID》
余分なスペースを削除してスペースを全角または半角に揃える 《SUBSTITUTE・TRIM》
全角の英数字を半角にするには、またはその逆 《ASC・JIS》
数字文字列を数値にする(関数編) 《VALUE》
別々のセルに入っているデータを結合して(つなげて)表示する 《アンパサンド・CONCAT (CONCATENATE) 》
セルに入力されている数値を時刻の表示にする 《TIME》
時刻の「8:30」を「8.5」と数値に変換する
循環参照を解決するために
条件を満たすセルの個数を数える 《COUNTIF》
フィルターで抽出されたデータの件数、合計をセルに表示したい 《SUBTOTAL》
検索条件に一致するデータの合計を求める 《SUMIF》
負の小数値を合計したときに計算結果に誤差が生じる
カウントする関数が何をカウントするか 《COUNT・COUNTA・COUNTBLANK》
=のあとに+が表示された「=+」から始まる数式の意味とは
数式で参照しているセルを変更しても、結果が更新されない
セルに計算結果ではなく数式が表示されている
先頭のシングル クォーテーション、アポストロフィー(')を取るには(関数編) 《SUBSTITUTE》
10進数の数値を2進数と16進数に変換するには 《DEC2BIN・DEC2HEX》
月の日数、月末を求める 《EOMONTH》