概要
Excelで「2つの日付の差(日数)」を求めるなら、DATEDIF関数の "d" を使うのが最短です。DATEDIFは開始日から終了日までの差を、指定した単位で返す“隠し関数”で、特に "d" は純粋な経過日数を返します。請求期間、プロジェクトの経過日数、納期までの残り日数など、日単位の計算に最適です。
基本の使い方
書式と引数の意味
=DATEDIF(開始日, 終了日, "d")
- 開始日と終了日は日付(セル参照やDATE/TODAYなど)
- “d” は「日数差(経過日数)」を意味します(開始日から終了日までの“日数”)
例(最も基本)
=DATEDIF("2025/12/01","2025/12/17","d") // 16
「12/1から12/17まで」は16日が経過(開始日を0日目として数えます)。
具体例
セル参照で日数差を求める
=DATEDIF(A2,B2,"d")
A2が「2025/12/01」、B2が「2025/12/17」なら「16」。
今日までの経過日数
=DATEDIF(C2,TODAY(),"d")
C2の開始日から「今日」までの日数を返します。
期限までの残り日数(負数対策込み)
=MAX(0, DATEDIF(TODAY(),D2,"d"))
今日からD2の期限までの残り日数。期限を過ぎていても0未満にならないよう安全に。
応用テンプレート
開始日・終了日が逆の場合の安全対策
=DATEDIF(MIN(E2,F2), MAX(E2,F2), "d")
開始日と終了日が逆でも正しい日数を返します(本来、開始>終了だとエラー)。
期間の“含め方”を変えたい(終了日も含む)
=DATEDIF(G2,H2,"d")+1
「開始・終了の両端を含めた日数」を取りたい場合に+1。
営業日だけの差(日〜土のうち平日+祝日除外対応)
=NETWORKDAYS(I2,J2, 祝日範囲)
土日と指定祝日を除いた営業日数を返します(純粋なDATEDIFの代替として)。
よくあるつまずきと対策
開始日が終了日より後だと #NUM! エラー
DATEDIFは「開始日 ≤ 終了日」でないとエラーになります。MIN/MAXで並べ替える、またはIFで事前にチェックしましょう。
“何日含めるか”の誤解
DATEDIF(“d”)は「開始日から終了日の前日までの経過日数」。両端を含めた日数が欲しければ「+1」します。
時刻は無視される
DATEDIFは「日付」ベース。時刻(時間・分・秒)は計算に影響しません。時刻込みの差が必要なら「終了-開始」に24時間換算で求めます。
=(J2-I2)*24 // 時間差(表示形式を標準/数値に)
DATEDIFは“隠し関数”
関数入力支援に出ないことがありますが、機能は有効です。単位は “d”(日)、”m”(月)、”y”(年)、”md”(月を無視した日差)、”ym”(年を無視した月差)、”yd”(年を無視した日差)があります。
例題
問題1: A2セル(開始日)からB2セル(終了日)までの純粋な経過日数をC2に表示してください。
解答例:
=DATEDIF(A2,B2,"d")
問題2: C2セルの開始日から「今日」までの経過日数をD2に表示してください。
解答例:
=DATEDIF(C2,TODAY(),"d")
問題3: E2セルの開始日からF2セルの終了日まで、両端を含めた日数をG2に表示してください。
解答例:
=DATEDIF(E2,F2,"d")+1
問題4: H2セルが期限日のとき、今日から期限までの残り日数をI2に表示し、期限を過ぎていたら0としてください。
解答例:
=MAX(0, DATEDIF(TODAY(),H2,"d"))
問題5: J2セル(開始)からK2セル(終了)までの営業日数(祝日一覧はM2:M20)をL2に表示してください。
解答例:
=NETWORKDAYS(J2,K2,M2:M20)
まとめ
日付の差をシンプルに求めたいなら、DATEDIFの "d" が最短です。開始・終了の順序、両端を含めるかどうか、営業日か暦日か――この3点を決めてから式を組めば迷いません。期限管理や期間集計の現場では「DATEDIF(暦日)」「NETWORKDAYS(営業日)」の使い分けが定番。まずは "d" を基本形として体に入れておきましょう。
