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

[Excel]経過年数(満年数)の出し方 DATEDIF関数 その1

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

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


    【まとめ】
    エクセルで、日付1から日付2までの経過年数(満年数)を出す計算式
     =DATEDIF(日付1,日付2,“Y”)
      *注意:「満●歳」「●年目」は、これでは出せない(別途説明)。

    目次

    1. 【説明】

    2. 経過年数(満年数)の計算法方

    3. 【補足説明】

    4. 【応用1】今日現在の経過年数を出す

    5. 【応用2】同一基準日で複数日の経過年数を計算

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

    【説明】

    「ある日付(日付1)」から「ある日付(日付2)」まで、何年経過したか(=満年数)、を求めることは結構あります。

    これ、いちいち手計算していたら、相当大変です。
    年度が変わる度に一覧表を手修正している人を見かけたことがあります。
    1足すだけかもしれませんが、「トンデモ」作業です。
    元の数字が間違っているおそれもあります。

    例えば、こんな表

    画像

    これくらいであれば、暗算でも出せるでしょう。
    でも手間だし、私なら間違う惧れが極めて高いので、やりたくありません。

    さて、お役所は和暦表示が基本です。
    では、こちらは、どうでしょうか?

    画像

    パッと計算できる人は少ないでしょう。
    *上の表と数値は同じで、西暦を和暦に変えただけです。

    エクセルを使えば、「ある日から、ある日まで、丸何年(満年数)経ったか」を簡単に計算できます。

    DATEDIFという関数を使います。

    「デート・ディフ」と読むそうです。
    DATEIF ではありません。
    IFは条件のIFではなく、
    DATE DIFference(違い)から来ているそうです。
    (「ed」なので受身形かなと思って、私はずっと「デーテッド・イフ」と覚えていました。)

    計算式の入力方法は、以下の通りです。

    経過年数(満年数)の計算法方

    ①「=detedif(」(小文字でOK) と入力
    ② 日付1(事実発生日)のセルをクリック(セル名が入る)
    ③ 「,」を入力
    ④ 「日付2」(終了日・基準日)のセルをクリック(セル名が入る)
    ⑤ 「,」を入力
    ⑥ 「“Y”」を入力(小文字のyでもOK)
    ⑦ 「)」を入力 → Enter
    *結果が日付形式になっていたら、Ctrl + 1 から「セルの書式設定」で「標準」を選ぶ。

    計算式内に直接日付を入れることもできますが、避けた方がいいでしょう。
    日付を変えるとき、面倒です。
    セルを指定して、そこに日付を入れた方が楽ですし、応用が効きます。

    この計算式を入れると、上の表はこうなります。

    画像

    計算式のトレースを表示すると、「日付1」と「日付2」のセルを参照していることが分かります。
    *計算式のトレース:Alt → A → M → P
     トレースの消去  :Alt → A → A

    画像

    【補足説明】

    =DATEDIF(日付1,日付2,”Y”)の最後の「“Y”」は「単位」です。
    この場合は「YEAR(年)」の「“Y”」であり、「日付1から日付2までの満年数を表示」させるためのものです。
    この単位は「何を表示したいか(=求めたいか)」により、変わります。

    “Y” 日付1から日付2までの満年数を表示(1年未満は切り捨て)
    “M” 日付1から日付2までの満月数を表示(1か月未満は切り捨て)
    “D” 日付1から日付2までの満日数を表示
    “YM” 日付1から日付2までの1年未満の月数のみを表示
       (年数と日数は無視)
    “YD” 1年未満の日数のみを求める・・・年数と月数はは無視
    “MD” 1か月未満の日数のみを求める・・・年数と月数は無視
      *実務で使うのは「“Y”」か「“M”」位ではないでしょうか。

    上と同じデータで、「満月数」を表示したい場合は以下の通りとなります。

    画像

    実務ではあまり使わないかもしれません(年金の月数計算など?)。

    年を無視して、日付1の「日」から日付2の「日」まで何日あるかを出したい場合は、以下の通りとなります。

    画像

    実務ではほぼ使わないでしょう。

    【応用1】今日現在の経過年数を出す

    日付2を常に「今日」にして計算する方法もあります。
    「今日現在における経過年数」が常に自動計算されます。

    =DATEDIF(日付1、TODAY()、“Y”)

    画像

    TODAY() は今日を意味します。()の中は空欄にします。
    これにより、常に「今日現在」の満年数が表示されます(上の画像はR5/9/14作成したものです。これは画像ですから変化しません。)。

    計算式や計算式のトレースを見ればわかるとおり、参照しているのは「日付1」のみです。
    日付2となるものは、「TODAY()」関数で自動算出しています。
    *枠外の「今日」は参考のためのものです。計算式では参照していません。

    【応用2】同一基準日で複数日の経過年数を計算

    複数の日付1に対し、同一の基準日を日付2としたい場合、表の一番上に、基準日を入れるセルを設けておくと楽です。
    この場合、計算式は以下の通りとなります。

    画像

    この場合、注意するべきことがあります。
    基準日のセル番号を「絶対参照」($付き)にしておくことです。
    「絶対参照」にしておけば、セル(計算式)をコピーしても、基準日が変わりません。
    「絶対参照」にしておかない場合、1つ下のセルにコピーすると、基準日の一つ下セルを参照してしまうため、計算が正しくできません。

    セルを絶対参照にするには、セルをクリック後、「F4」を1回押します。
    行と列の両方の前に「$」が付けば絶対参照です。

    「$」が付いていない場合、コピー先のセルの場所によって、計算式の参照セルが変わります(相対参照)。
    ・列(アルファベット)の頭に「$」が付いている場合
     横にコピーしても、列は同じままです。
     縦にコピーすると、列は変わりませんが、行は変わります。
    ・行(数字)の頭に「$」の頭に「$」が付いている場合
     縦にコピーしても、行は同じままです。
     横にコピーすると、行は変わりませんが、列は変わります。
    ・列の頭にも、行の頭にも「$」が付いていない場合
     縦でも横でも、違うセルにコピーすると、列も行も変わります。

    以下の例では、相対参照にしてしまっているため、行が変わると基準日が参照できず、エラーになっています。
    (エラーならまだいいのですが、違う日付を参照してしまうと、誤りが発生します)

    画像


    このDATEDIF関数、大変便利ですが、ちょっと注意が必要です。
    関数が悪いわけではなく、「開始日」や「満年数」の捉え方を理解していないと、ミスが生じます。
    詳しくは別記事で説明します。

    あなたへのおすすめ