Excelでスケジュールや契約管理をしていると、
「開始日と終了日の年月差を出したい」
「ある日付から現在までの年数や月数を知りたい」
といったシーンが多くあります。
✔ 年数差を出して勤続年数や年齢を算出したい
✔ 月数の差で契約期間や支払い回数をカウントしたい
✔ 「○年○ヶ月」形式で表示したい
この記事では、Excelで「日付と年月」を引き算して、年数・月数を計算する方法をわかりやすく解説します!
目次
✅DATEDIF関数で「年数」や「月数」を求める
DATEDIF
関数は、2つの日付の差を「年」「月」「日」単位で算出できる便利な関数です。
・年数を求める(満年数)
=DATEDIF(開始日, 終了日, "Y")
・月数を求める(満月数)
=DATEDIF(開始日, 終了日, "M")
・年を除いた月数(「○年○ヶ月」の"ヶ月"部分)
=DATEDIF(開始日, 終了日, "YM")
🧪 使用例
A列(開始日) | B列(終了日) | 年数差 | 月数差 |
---|---|---|---|
2020/01/01 | 2024/04/01 | =DATEDIF(A2,B2,"Y") → 4年 | =DATEDIF(A2,B2,"M") → 51ヶ月 |
【Excel】日付を1日足す計算方法【予定表や日次処理に便利!】
✅「○年○ヶ月」形式で表示する
年数+月数を1つのセルで表示したい場合は、DATEDIF
関数を組み合わせます。
=DATEDIF(A2,B2,"Y") & "年" & DATEDIF(A2,B2,"YM") & "ヶ月"
👉 2020/01/01 〜 2024/04/01 →「4年3ヶ月」 と表示されます。
【Excel】月単位の日付計算をする方法【月末処理・締日・請求書にも使える!】
✅YEAR/MONTH関数を使って差を出す(単位:ヶ月)
日付同士を「年月の差」としてカウントするには、以下のような計算も可能です。
=(YEAR(B2) - YEAR(A2)) * 12 + MONTH(B2) - MONTH(A2)
👉 これでA2からB2までのトータルの月数差が算出されます。
✅TODAY関数を使って「今日までの年月差」を出す
現在までの経過年数・月数を出す場合は TODAY()
を組み合わせます。
・経過年数
=DATEDIF(A2, TODAY(), "Y")
・経過月数
=DATEDIF(A2, TODAY(), "M")
・「○年○ヶ月」形式で表示
=DATEDIF(A2, TODAY(), "Y") & "年" & DATEDIF(A2, TODAY(), "YM") & "ヶ月"
📌 勤続年数や顧客との取引年数などにも活用できます!
📝 よくあるエラーと対処法
エラー | 原因 | 解決策 |
---|---|---|
#NUM! エラー | 開始日 > 終了日 になっている | 日付の順序を確認・IF関数で制御 |
#VALUE! エラー | セルに日付以外の値や文字列が入っている | セルを「日付」形式にする |
関数が出てこない | DATEDIFは「隠し関数」 | 手入力で入力(=DATEDIF(...)) |
まとめ:用途別・年月の差を求める方法
やりたいこと | 数式例 | 関数 |
---|---|---|
年数差を出す | =DATEDIF(A2, B2, "Y") | DATEDIF |
月数差を出す(トータル) | =DATEDIF(A2, B2, "M") | DATEDIF |
月単位の差(YEAR/MONTHで) | =(YEAR(B2)-YEAR(A2))*12+MONTH(B2)-MONTH(A2) | YEAR, MONTH |
「○年○ヶ月」形式で表示 | =DATEDIF(A2,B2,"Y") & "年" & DATEDIF(A2,B2,"YM") & "ヶ月" | DATEDIF |
今日までの年月差 | =DATEDIF(A2,TODAY(),"Y") & "年" & DATEDIF(A2,TODAY(),"YM") & "ヶ月" | DATEDIF + TODAY |
🎯 活用シーン
勤続年数・在籍年数の自動表示
契約期間・取引期間の算出
製品購入からの経過年月の管理
年齢・月齢の計算(保育園・医療機関など)