納期までの日数や契約期間、勤続日数を出したいとき、日付どうしは普通の引き算で日数が出ます。うまくいかない時は、ほとんどが「日付が文字になっている」か「答えのセルが日付の表示になっている」のどちらかです。先に求め方、そのあと原因の見つけ方をまとめます。
使う表の例です。A2に開始日(2026/4/1)、B2に終了日(2026/10/9)が入っています。
■ いちばん簡単:引き算
=B2-A2
試した結果:191
当日を含めて数えたいときは、1を足します。
=B2-A2+1
試した結果:192
今日までの日数なら =TODAY()-A2 です。
■ 年・月・日で数える:DATEDIF
満の年数:=DATEDIF(A2,B2,"Y")
試した結果:0
満の月数:=DATEDIF(A2,B2,"M")
試した結果:6
日数:=DATEDIF(A2,B2,"D")
試した結果:191
別の例で、2024/1/15から2026/10/9までなら、満の年数は2、満の月数は32になります。
DATEDIFは関数の候補に出ませんが、入力すれば使えます。開始日が終了日より後だと #NUM! になります。
■ 土日を除いた日数
=NETWORKDAYS(A2,B2)
試した結果:138
開始日と終了日を含んで数えます。祝日も除くときは、祝日を並べた範囲を3つ目に入れます。
■ うまくいかない原因と直し方
原因1:答えが「1900/1/10」のような日付で出る
→ 答えのセルの表示形式が日付になっています。「標準」か「数値」に変えます。
原因2:#VALUE! が出る、または答えがおかしい
→ 日付が文字になっていることが多いです。セルが左に寄っている、先頭に「'」がある、「2026.10.9」のようにドットで区切られている、のが目印です。見分けるには、別のセルに =ISNUMBER(A2) と入れます。FALSE なら文字です(試した結果:文字の日付ではFALSE)。
原因3:文字の日付を直す
→ 「データ」→「区切り位置」→そのまま「完了」で日付に変わる場合があります。変わらないときは、ドット区切りなら次の式で日付にします。
=DATEVALUE(SUBSTITUTE(A2,".","/"))
試した結果:46304(セルの表示形式を日付にすると2026/10/9)
原因4:答えがマイナスになる
→ 開始と終了が逆です。入れ替えるか、=ABS(B2-A2) で絶対値にします。
■ つまずきやすい点
・時刻が入っていると、答えが小数になります。例:2026/10/9 15:00 から 2026/10/11 9:00 までは 1.75(1日と18時間)。日数だけ欲しいときは =INT(B3-A3) で 1 になります
・1900年より前の日付は扱えません
・操作名や関数名はWindowsのExcel(Microsoft 365)の表記です。Macや古い版では少し違う場合があります
・式は例です。ご自分の表のセル位置に置き換えてお使いください
■ 向かない場合
祝日や会社独自の休み、月の途中の日割りなど、条件が重なる計算表は、式が長くなって間違いを見つけにくくなります。その場合は、手で直すより調整を頼むほうが早いこともあります。
まとめ:日数は =B2-A2。年・月で数えるなら DATEDIF、土日を除くなら NETWORKDAYS。合わない時は、答えのセルの表示形式と、日付が文字になっていないか(ISNUMBER)を見ます。