見出し画像

[Excel]DATEDIF関数の注意点 「開始日」は「1日目」ではない

期間計算に関する記事一覧はこちら

エクセルで経過年数を計算するDATEDIF関数の続きです。
便利な関数ですが、ちょっと(結構)注意が必要です。

目次

  1. DATEDIF関数は非公式な関数

  2. 【注意1】年数は「満年数」で計算される

  3. 【注意2】1年はいつ満了するか?

  4. 【注意3】開始日=起算日(1日目)ではない(民法140,141条)

  5. DATEDIF関数は民法の日数計算と同じ

  6. 【年数計算・年齢計算まとめ(DATEDIF関数)】

DATEDIF関数は非公式な関数

DATEDIF関数は、関数の挿入ダイアログには候補が表示されません。

セルに直打ちしても、候補関数には表示示されません。

エクセルでは非公式の関数とされているためです。

他社の計算ソフト(ロータス1-2-3/ワンツースリー)との互換性を維持するために作られた関数らしいのですが、うるう年が入ると、正確な計算ができないことがあるそうです。
具体的には、うるう日(2/29)を挟んだ月数や日数の計算で誤りが生じるようです(未検証)。
そのため、注意は必要ですが、おそらく年の計算では、通常は計算ミスは生じないと思われます。
いずれにせよ、「まだ」使える関数です。
このDATEDIF関数を使わずに年数計算する方法もありますが、結構難しく、現実的ではありません。
マイクロソフトサポートでは、かなり難しい計算式を示しています。
年齢を計算する - Microsoft サポート

マイクロソフトとしては、DATEDIF関数を「なきもの」にしたいのかもしれません。
いずれなくなる関数かもしれませんが、そうならないことを願っています。

*DATEDIF関数と、その代替となる関数で、年数計算に誤りが出るか、については、別記事で検証してみたいと思います。

このDATEDIF関数、非公式であること以外にも、注意すべき点があります。

【注意1】年数は「満年数」で計算される

第一に注意が必要なのは、計算される年数は「満年数」ということです。
1年未満の月数・日数は切り捨てになります。

下表では、1年が経過していないので、経過年数(満年数)は「0」です。

「1年未満は切り捨て」は当たり前では? と思うかもしれません。
問題は、「いつ1年が満了するか」です。

【注意2】1年はいつ満了するか?

計算されるのは「満年数」、すなわち、「丸●年経ったか」です。
大事なのは「丸●年」の「丸」です。
「丸1年」とは、うるう年以外は、365日です。
1年(365日)が経過(満了)して、はじめて、丸1年(満1年)です。

では、365日の最初の日(1日目)は、いつでしょうか?

通常、「期間を数え始める日(1日目)」である「起算日」は、「日付1(事実発生日)の翌日」です。
「日付1」は「1日目」ではないのです。

これは、民法140条による「初日不算入の原則」によるものであり、公務員にとっては「イロハのイ」でしょう。

参考
民法第140条
日、週、月又は年によって期間を定めたときは、期間の初日は、算入しない。ただし、その期間が午前零時から始まるときは、この限りでない。

民法第141条
前条の場合には、期間は、その末日の終了をもって満了する。

従って、1年(起算日から365日)が満了するのは、1年後(=起算日を1日目として365日目)の「日付1」が終わる24時(午後12時)となります。
日付としては、1年後の「日付1」その日となります。
「日付1」の前日に満1年になるわけではないことに注意が必要です。

ややこしいので、エクセルで1日ずつずらして計算してみます。

起算日は参考のために記載しているものであり、計算式には使っていません

R4.4.1が日付1の場合、起算日(1日目)はR4.4.2であり、365日が経過(満了)するのは、R5.4.1(の24時)となり、同日、満1年という計算結果になっていることが分かります。
(R6年はうるう年なので、R4~R5年で算出しています。)

この「日付1」は、「事象(事実)発生日」と称した方が分かりやすいかもしれません。
実務では「許可日」「登録日」「認定日「契約日」等となるでしょうか。

【注意3】開始日=起算日(1日目)ではない(民法140,141条)

一般的には「日付1」は「開始日」というかもしれません。
DATEDIF関数に関するエクセル本・WEBでの説明は、開始日といっている場合がほとんどです。
間違いではありませんが、「開始日」=「起算日」(1日目)ではないことに注意する必要があります。
「日付1」を「開始日」と表現することで、「開始日」=「1日目」と誤解してしまい、「DATEDIF関数は正しく期間計算できない」としている例もありますので、注意が必要です。

DATEDIF関数は民法の日数計算と同じ

「DATEDIF関数は注意が必要」と書いてきましたが、
これまでの記述のとおり、
DATEDIF関数の計算は、民法の日数の計算と同じものであり、
民法を承知していれば(=普通の公務員の常識なら)、何ら問題ないものです。

従って、「=DATEDIF(日付1,日付2,"Y")」という計算式では、以下を計算することができません。
・「●年目」の計算
・「満●歳」の計算

*後者は特にトラップです。多くのWEBサイトでは不十な説明となっています。
「エクセル 年齢計算」でヒットした上位10件を見ましたが(2024/1/20時点)、いずれも正確とはいえませんでした。
詳細は別記事として掲載します。


この記事が気に入ったらサポートをしてみませんか?