Excel・表計算
2026年9月8日更新 約9分で読めます

Excel 日数計算 関数|DATEDIF・DAYS・NETWORKDAYSの使い分け

Excelの日数計算は目的で関数を選びます。日付差は引き算、DAYS、年月日の分解はDATEDIF、土日祝を除くならNETWORKDAYSです。この記事ではA2を開始日、B2を終了日として、使える式と「初日を含む」数え方を整理します。

田中さくらのプロフィール画像
田中 さくら
ライター・表計算の実務活用を中心に執筆

前提:A2を開始日、B2を終了日とする日付セルです。契約・勤怠・請求に独自の起算日があれば、先にルールを確認します。

まず結論:Excelの日数計算は目的別に関数を選ぶ

「excel 日数計算 関数」で調べている場合、最初に決めるのは関数名ではなく、何を数えたいかです。開始日と終了日の間に経過した日数だけが必要なら =B2-A2、開始日も1日目として数えるなら =B2-A2+1 を使います。土日や祝日を除く勤務日数なら、通常の引き算ではなく NETWORKDAYS が適しています。

下の表は、よくある目的と式の対応です。A2とB2のセル位置を自分の表に置き換えれば、そのまま検算に使えます。

求めたいもの そのまま使える式 数え方・注意点
2つの日付の経過日数 =B2-A2 開始日を含めない日付差。4月1日〜4月10日は9日
日付差を関数で書く =DAYS(B2,A2) 終了日を先、開始日を後に指定する
初日と終了日を両方含む =B2-A2+1 旅行、利用期間、開催日数などの暦日カウント
何年何ヶ月何日 =DATEDIF(A2,B2,"y") など 年・月・日の単位に分けて表示する
開始日から今日まで =TODAY()-A2 再計算するたびに今日の日付が変わる
土日祝を除く日数 =NETWORKDAYS(A2,B2,$F$2:$F$20) F列などに祝日を日付で登録する
式を決める前の3つの確認
  • 開始日と終了日を数えるのか、日付の差分だけを求めるのか。
  • 土日だけを除くのか、祝日・会社休日も除くのか。
  • 結果を日数で表示するのか、年月日の期間として表示するのか。

日付セルを正しく準備する:文字列のまま計算しない

式が合っているのに #VALUE! になるときは、A2やB2が日付ではなく文字列になっていることがよくあります。セルを選択し、「ホーム」タブの表示形式を日付に変えて、右寄せの値として認識されているかを確認してください。ただし、表示形式を変えるだけでは文字列が日付に変換されない場合もあります。

外部データから取り込んだ日付、先頭にアポストロフィがある値、「2026年4月1日」のような表示文字列は要注意です。入力を作り直すなら =DATE(2026,4,1) のようにDATE関数を使うと、年月日の区切りを明確にできます。時刻まで含むセルを日単位で扱うときは、=INT(B2)-INT(A2) として小数部分を落とす方法もあります。

日付を入力したら、まず =B2-A2 を別セルで試してください。日付差ではなく大きなシリアル値やエラーが出る場合は、関数を変える前にセルの型と入力形式を直すのが近道です。Microsoftの DATE関数の説明も、引数の順番を確認する参考になります。


日付の差を計算する基本式:引き算とDAYS

開始日をA2、終了日をB2に入力し、=B2-A2 と書くのが最もシンプルなExcelの日数計算です。たとえばA2が2026/4/1、B2が2026/4/10なら結果は9になります。これは4月1日から4月10日までに経過した日数で、4月1日を「1日目」として数える計算ではありません。

同じ差分を関数名で明示したい場合は =DAYS(B2,A2) を使います。DAYSは「終了日、開始日」の順番なので、=DAYS(A2,B2) と逆に書くとマイナスになります。入力順を問わず絶対値だけが必要なら =ABS(B2-A2) ですが、開始日と終了日を間違えても気づきにくくなるため、勤怠や請求の表では入力チェックも用意してください。

単純な日付差は、契約の経過日数、プロジェクトの進行期間、発送から到着までの暦日などに向いています。一方、入院・旅行・イベントのように始まりの日も1日分として扱う業務では、次の「+1」のルールを採用するかを先に決めます。

DAYS関数を使うときの順番

DAYSの基本形は =DAYS(終了日,開始日) です。セル参照を入れ替えないことがポイントです。日付が逆になる可能性がある一覧では、=IF(B2 のように警告を出すと、負の値を見落としにくくなります。


初日・終了日を含める場合:結果に+1する理由

「4月1日から4月10日まで何日間か」を、日付の差ではなく両端を含む日数として数えるなら =B2-A2+1 です。4月1日、2日、3日……10日を一覧で数えるため、経過日数の9に1を足して10になります。Excelのシリアル値では各日付が1ずつ離れているため、この+1は関数の特別な仕様ではなく、数え方を暦日カウントに合わせるための調整です。

初日だけを含める、終了日だけを含める、両端を含めないという社内ルールもあります。+1を機械的に入れるのではなく、契約開始日、利用終了日、休業期間、イベント開催期間など、対象の定義を確認してください。同じ期間でも、経過日数と両端入れ日数は別の結果です。

開始日・終了日の含み方を画面で比較したい場合は、当サイトの両端入れ日数計算を使えます。Excelに入力する式を決める前に、4つの数え方を並べて確認すると1日ずれの原因を説明しやすくなります。

具体例:4月1日〜4月10日
  • 経過日数:=B2-A2 → 9日
  • 両端を含む:=B2-A2+1 → 10日
  • 開始日と終了日が同じ:差分は0日、両端を含むと1日
日付差、両端を含む計算、営業日計算の違いを3つの記号で示した編集型図解
引き算、+1、NETWORKDAYSは、同じ日数計算でも数えている対象が異なります。

DATEDIFで何年何ヶ月何日を出す

在籍期間、勤続期間、契約期間などを「2年3ヶ月12日」のように表示したい場合は、DATEDIFを単位ごとに組み合わせます。満年数は =DATEDIF(A2,B2,"y")、年を除いた残りの月数は =DATEDIF(A2,B2,"ym")、月を除いた残りの日数は =DATEDIF(A2,B2,"md") です。

`&`で文字列を連結すると、年月日を1つのセルにまとめられます。基本形は =DATEDIF(A2,B2,"y")&"年"&DATEDIF(A2,B2,"ym")&"ヶ月"&DATEDIF(A2,B2,"md")&"日" です。0年や0ヶ月を表示したくない場合は、IF関数を組み合わせて空欄にする設計もできます。

DATEDIFは開始日が終了日より後だとエラーになり、月末やうるう年をまたぐと単純な日数÷30とは一致しません。履歴書や契約書へ転記するなら、満月数と残日数の定義を確認し、画面の式をそのまま制度上の判定に使わないようにしてください。MicrosoftのDATEDIF関数の仕様も合わせて確認できます。

月末をまたぐときの見方

1月31日から2月28日、うるう年の2月29日から3月31日のような期間は、暦の月長が違うため、日数を30で割った概算と満月数がずれることがあります。Excelで実務表を作るときは、何年何ヶ月何日という表示と、合計日数の両方を残すと後から検算しやすくなります。


TODAYで今日までの日数を自動更新する

開始日から今日までの日数は、開始日がA2なら =TODAY()-A2 です。契約開始からの経過日数、プロジェクト開始からの日数、記念日からの経過日数など、毎日変わる値を管理するときに便利です。開始日を1日目として数えるなら =TODAY()-A2+1 にします。

TODAYは入力した日付を固定する関数ではなく、Excelが再計算した時点の現在日付を返します。作成日時点の結果を保存したい管理表では、計算後にコピーして「値として貼り付け」する、または別の固定日セルを設けるなど、更新方法を決めてください。未来の日付を入力した場合はマイナスになるため、次のような条件分岐も使えます。

未来の日付を空欄にする式
  • =IF(A2>TODAY(),"",TODAY()-A2)
  • 開始日を含めたい場合は、最後を TODAY()-A2+1 に変更します。
  • 固定の基準日で比較したい場合は、TODAYではなく基準日セルを参照します。

NETWORKDAYSで土日・祝日を除く日数を計算する

通常の暦日ではなく、平日や営業日だけを数えるなら =NETWORKDAYS(A2,B2) を使います。標準設定では土曜日と日曜日を除外し、開始日と終了日を含めた営業日数を返します。たとえば納期までの稼働日、平日勤務の日数、作業可能日数を集計するときに使えます。

日本の祝日や会社独自の休日も除きたい場合は、F2:F20などに休日を日付で並べ、=NETWORKDAYS(A2,B2,$F$2:$F$20) とします。$を付けた絶対参照なら、式を下の行へコピーしても休日リストの範囲がずれません。祝日欄に文字列や空白以外のメモが混ざると結果が不安定になるため、日付だけの一覧に分けてください。

週末が土日ではない勤務形態なら NETWORKDAYS.INTL を使い、週末パターンを指定します。「5営業日後の日付」のように日数ではなく到達日を求める場合は WORKDAY の役割です。営業日数と営業日後の日付を混同しないよう、目的に応じて関数を分けます。

営業日数と日付差の違い

=B2-A2 は土日を含む暦日差、=NETWORKDAYS(A2,B2) は指定範囲内の営業日数です。両者が違うのは正常なので、結果が一致することを期待せず、表の列名にも「暦日」「営業日」と明記しておくと誤入力を防げます。土日祝の内訳を確認したい場合は平日・土日・祝日の日数計算も利用できます。


計算結果がおかしいときの確認点

日数計算のトラブルは、関数そのものよりも日付の型、入力順、含む・含まないの定義、休日リストの範囲で起きます。次の表を上から確認すると、式をやみくもに書き換えずに原因を切り分けられます。

症状 主な原因 確認・対処
#VALUE!になる 日付が文字列、または無効な日付 DATE関数で作り直し、セルの表示形式と入力値を確認
結果が1日少ない 差分と両端入れを混同 =B2-A2=B2-A2+1 を目的に合わせて使い分ける
結果がマイナス 終了日が開始日より前 入力順を直す。順不同の差だけならABSを検討
DATEDIFがエラー 開始日が終了日より後、または日付が不正 A2≤B2か、両セルが日付として認識されているか確認
営業日数が多い 祝日範囲を渡していない 休日を日付一覧にしてNETWORKDAYSの第3引数へ固定参照
日ごとに結果が変わる TODAY関数を使っている 固定値が必要なら結果を値貼り付けし、基準日を保存

式の結果をオンラインで照合する

Excelの式を作ったあと、入力値が正しいかをすぐ確認したいときは、当サイトのExcel日数計算ツールが使えます。開始日と終了日を入力すると、通常の日数、両端を含む日数、営業日数、今日までの日数と、目的に近い式を並べて確認できます。

オンラインの結果は、セルの入力ミスや+1の有無を見つけるための照合用です。会社の休日、契約上の起算日、休暇の扱いなど、制度に関する最終判断を自動計算だけで決めるものではありません。日付差だけを確認したい場合は日付計算、土日祝の内訳は営業日数計算へ進むと、目的別に確認できます。

今すぐ日数を計算

まとめ:式より先に数え方を決める

Excelの日数計算では、=B2-A2 が経過日数、+1 が両端を含む暦日カウント、DAYS が日付差を明示する関数、DATEDIF が年月日への分解、TODAY が今日基準、NETWORKDAYS が土日祝を除く営業日数です。まずA2・B2の日付を正しくそろえ、対象のルールを決めてから式を選んでください。

必要な式が決まらないときは、通常の日数と両端入れの両方を計算し、目的に合う方を採用します。入力した値を画面で照合したい場合は、Excel日数計算ツールを使うと、式と結果を短時間で比較できます。

Excelの日数計算に関するFAQ

Excelで2つの日付の差を計算する一番簡単な式は?

開始日をA2、終了日をB2に置くなら =B2-A2 です。これは開始日を含めない経過日数なので、両端を数える場合は =B2-A2+1 にします。

Excelの日数計算で初日を含むにはどうしますか?

日付の差分に1を足し、=B2-A2+1 とします。旅行やイベントのように開始日と終了日をそれぞれ1日として数える場合に使います。

DAYS関数の引数の順番はどちらが先ですか?

=DAYS(終了日,開始日) の順です。A2が開始日、B2が終了日なら =DAYS(B2,A2) と入力します。

何年何ヶ月何日をExcelで表示する関数は?

DATEDIFを単位別に組み合わせます。満年数は "y"、年を除いた月数は "ym"、月を除いた日数は "md" を指定します。

土日祝を除いた日数計算には何を使いますか?

NETWORKDAYSを使います。土日だけなら =NETWORKDAYS(A2,B2)、祝日一覧も除くなら第3引数に休日範囲を指定します。

Excelの日数計算が1日ずれる原因は何ですか?

開始日と終了日を含めるかどうかの定義が、式と目的で違っている可能性があります。=B2-A2 は差分、=B2-A2+1 は両端を含む日数です。

公式仕様を確認する

関数の引数や日付の扱いを確認したい場合は、Microsoftの公式サポートも参照してください。

  1. Microsoft サポート:DATEDIF関数
  2. Microsoft サポート:DAYS関数
  3. Microsoft サポート:NETWORKDAYS関数

関連する計算ページ