メインコンテンツへスキップ
見出し画像

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

    2025/4/20追加 PDF版「日付と時間の入力、表示、計算」を作成しました



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

    エクセルで経過年数を計算する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時点)、いずれも正確とはいえませんでした。
    詳細は別記事として掲載します。


    あなたへのおすすめ