Excel関数 逆引き集 | 月数の差 → DATEDIF(“m”)

Excel
スポンサーリンク

概要

「2つの日付の“月数差”」を最短で出すなら、DATEDIF関数の "m" を使います。"m" は開始日から終了日までの“丸めた月数”(端数の日を切り捨て)を返します。契約の経過月数、勤続月数、分割支払いの回数計算など“月単位”の集計で威力を発揮します。


基本の使い方

書式

=DATEDIF(開始日, 終了日, "m")
  • 開始日 ≤ 終了日である必要があります(逆だと #NUM!)。
  • 戻り値は「完全に経過した月数」。端数日はカウントされません。

=DATEDIF("2025/01/15","2025/12/17","m")  // 11

1月15日→12月17日まで“完全に経過した月”は11か月(開始が15日、終了が17日なので12か月に満たず11)。


具体例

セル参照で月数差を取得

=DATEDIF(A2,B2,"m")

A2が「2024/04/10」、B2が「2025/04/09」なら「11」。翌年同月でも“9日 < 10日”なので満1年に満たず11か月。

今日までの経過月数

=DATEDIF(C2,TODAY(),"m")

入社日C2から今日まで“完全に経過した月数”を返します。

契約更新までの残り“満了月数”

=DATEDIF(TODAY(),D2,"m")

今日から契約終了日D2まで、満了ベースの残月数(端数日は含まない)。


応用テンプレート

年月差を“合計月数”として計算(端数切り捨て)

=DATEDIF(開始, 終了, "m")

最も簡単・安定。

年・月・日を分解(満年・満月・残日)

=DATEDIF(開始, 終了, "y")   // 満年
=DATEDIF(開始, 終了, "ym")  // 満年を除いた残りの満月
=DATEDIF(開始, 終了, "md")  // 満年+満月を除いた残日

「◯年◯か月◯日」の表記に便利。

開始・終了が逆でも安全に(エラー回避)

=DATEDIF(MIN(E2,F2), MAX(E2,F2), "m")

順序が入れ替わっても常に正の月数差。

合計月数を数式で手計算(DATEDIFが使えない環境用)

=(YEAR(終了)-YEAR(開始))*12 + (MONTH(終了)-MONTH(開始)) - IF(DAY(終了)<DAY(開始),1,0)

端数日の有無を自前で調整(終了日の日が開始日より小さいと1か月引く)。


よくあるつまずきと対策

“端数日”は数えない仕様

DATEDIF(“m”)は「完全に経過した月」だけを返します。たとえば 1/31 → 2/28 は 0(1か月未満)。“翌月同日”で測りたいなら EDATE で基準をずらして比較します。

開始>終了はエラー

#NUM!になります。MIN/MAXで並べ替えるか、IFで事前チェックしてください。

文字列日付の解釈ズレ

「YYYY/MM/DD」が文字列扱いだと環境差で誤解釈することがあります。DATE関数で生成する、またはセルの表示形式を「日付」に。

“満◯か月”か“端数込み”かを使い分け

満月数なら DATEDIF(“m”)。端数込みの“月換算”なら年・月差を合計し、日による±調整を自前で入れるか、基準日を EDATE で揃えて判定します。


例題

問題1: A2セル(開始日)からB2セル(終了日)までの“満月数”をC2に表示してください。

解答例:

=DATEDIF(A2,B2,"m")

問題2: 入社日D2から今日までの“満月数”をE2に表示してください。

解答例:

=DATEDIF(D2,TODAY(),"m")

問題3: F2セル(開始日)とG2セル(終了日)の順序が逆でも正しい“満月数”をH2に表示してください。

解答例:

=DATEDIF(MIN(F2,G2),MAX(F2,G2),"m")

問題4: I2セル(開始日)からJ2セル(終了日)までを「◯年◯か月◯日」でK2に表示してください。

解答例:

=DATEDIF(I2,J2,"y")&"年"&DATEDIF(I2,J2,"ym")&"か月"&DATEDIF(I2,J2,"md")&"日"

問題5: L2セル(開始)からM2セル(終了)までの“合計月数”を、DATEDIFを使わず数式でN2に表示してください。

解答例:

=(YEAR(M2)-YEAR(L2))*12 + (MONTH(M2)-MONTH(L2)) - IF(DAY(M2)<DAY(L2),1,0)

まとめ

DATEDIF(“m”)は「満月数」を一発で返す、月差計算の定番です。端数日を含めない仕様を理解し、順序エラーを避けるだけで“契約月数・勤続月数・支払い回数”が安定して求まります。表記を分解するなら “y”/”ym”/”md”、同日比較なら EDATE——この使い分けを押さえると、月単位の日付処理がぐっと楽になります。

タイトルとURLをコピーしました