2つの日付の間が何日かは、ふつうの引き算で求められます。うまくいかない時は、ほとんどが「日付が文字になっている」か「答えのセルが日付の表示になっている」のどちらかです。方法を先に示し、そのあと原因の見つけ方を書きます。
■ いちばん簡単:引き算
開始日がA2、終了日がB2にあるとき、次の式です。
=B2-A2
当日を含めて数えたいときは、1を足します。
=B2-A2+1
今日までの日数なら、次のとおりです。
=TODAY()-A2
■ 年・月・日で数える:DATEDIF
=DATEDIF(A2,B2,"Y") 満の年数
=DATEDIF(A2,B2,"M") 満の月数
=DATEDIF(A2,B2,"D") 日数
たとえば2026/4/1から2026/10/9なら、年は0、月は6、日数は191になります。DATEDIFは関数の候補に出ませんが、そのまま入力すれば使えます。開始日が終了日より後だと #NUM! になります。
■ 土日を除いた日数:NETWORKDAYS
=NETWORKDAYS(A2,B2)
開始日と終了日を含めた平日の数です。祝日も除くときは、第3引数に祝日の一覧の範囲を入れます。
■ うまくいかない時の原因と直し方
原因1:答えが「1900/1/10」のような日付で出る
答えのセルの表示形式が日付になっています。セルを右クリック→セルの書式設定→「標準」か「数値」に変えます。
原因2:#VALUE! が出る
日付が文字として入っています。セルが左寄せ、先頭に「'」が付く、「2026.10.9」のようにドットで区切られている、などが目印です。見分けるには、次の式を入れます。
=ISNUMBER(A2)
FALSEなら文字です。
原因3:文字の日付を日付に直す
ドット区切りの文字は、置き換えてから日付に変えます。
=DATEVALUE(SUBSTITUTE(A2,".","/"))
2026.10.9 は 46304(日付の通し番号)になるので、表示形式を日付にすると 2026/10/9 と出ます。スラッシュ区切りの文字なら =DATEVALUE(A2) だけで直ります。
原因4:答えがマイナスになる
開始と終了が逆です。入れ替えるか、絶対値にします。
=ABS(B2-A2)
■ 気をつけること
・時刻が入っていると、答えに小数が出ます。日数だけ欲しいときは次の式です。
=INT(B2-A2)
・1900年より前の日付は扱えません。
■ 向かない場合
祝日・会社独自の休み・月途中の日割りなど、条件が重なる計算表は、式が長くなって間違いが見つけにくくなります。手作業で直すより、専門の調整が早い場合があります。
■ 注意
・操作名・関数名は Windows・Microsoft 365 のExcelの表記です。Macや古い版では少し違うことがあります。
・式は例です。自分の表のセル位置に置き換えて使ってください。
納期・契約期間・勤続日数などの計算表が合わずに困っている方は、Excel調整サービスでご相談を承ります。