Excel 指定期間内の年数、月数、日数を取得(DATEDIF関数)

2020年5月23日

DATEDIF関数は二つの日付の間の月数、月数、日数を計算する関数です。

この関数はLotus 1-2-3との互換性のために残されている関数で

「関数の挿入」では一覧に表示されない関数です。

バグもあり今後、修正する予定がありません。

つまりサポートされない関数のため使えなくなる可能性があります。

そのため可能な限り使用しない方がよいでしょう。

(この関数は便利なのでどうにかしてほしい)

とはいえスピルが地味にサポートされているので

まったく手をつけないわけでもなさそうです。

仕様

=DATEDIF(開始日,終了日,単位)
引数省略時の値説明
開始日省略不可期間を取得する開始日を指定。
終了日省略不可期間を取得する終了日を指定。
開始日より過去の日付を指定すると#NUM!エラー
単位省略不可計算方法を文字列で指定(後述)
引数の詳細

単位の仕様

内容
Y期間全ての年数
M期間全ての月数
D期間全ての日数
YM年月を無視した月数
YD年月を無視した日数
MD年月を無視した日数
※修正予定なしのバグあり

代替手段

全ての機能を代替出来ませんが、下記の関数を使用します。

日数が違う月同士の計算や閏年の扱いを自分で調整できる利点もあります。

2つの日付の間の日数を取得(DAYS関数)

DAYS関数で月を跨いで日付を計算する場合に使用します。(単位:D)

日時データより年月日時分秒を抽出する関数(YEAR、MONTH、DAY、HOUR、MINUTE、SECOND)

各関数で年数や月数を計算する場合に使用します。(単位:Y、YM)

単位:Mは年数を12で掛ける調整が必要です。

年、月、日を指定して日付(シリアル値)を取得(DATE関数)

DATE関数で年や月を合わせてからDAYS関数で計算します。(YDとMD)

使用例

DATEDIF関数を使用した結果の例です。

単位別、DATEDIF関数の実行例

スピルを利用する方法とメリット

Office365やExcel2019以降ではスピルという形式で記述可能です。

これは複数セルに数式をコピーする場合に便利な機能です。

スピルの利用には何れかの引数を複数セルの範囲で指定します。

スピルでDATEDIF関数を記述する例(F3セル)
スピルでDATEDIF関数を記述する例(F3セル)

数式を入力するのは最初の一つのセルですが、

引数で指定した高さ分、数式がセルのコピーなしで自動拡大されます。

F3に指定したDATEDIF関数がF8まで自動拡大
F3に指定したDATEDIF関数がF8まで自動拡大

スピルを利用することで今回の例では、

F3セルに入力するだけでよいため(F4以降にコピーペーストが不要)

以下のメリットがあります。

  • 入力の手間が少ない(数式のセルが多いほど効果が大きい)
  • 数式を編集した時、コピー忘れのリスクがない(最初のセルを更新すると全セルに反映)
  • 絶対参照が不要
  • 途中に行を追加した場合、数式のコピー&ペーストが不要。行削除でも壊れにくい。

関連記事

関数の仕様と使い方の記事一覧