Excelで2つの日付の差を計算したいとき、「何日経過したか」「何か月経ったか」「土日祝日を除くと何営業日になるか」など、目的によって使う計算式が異なります。
単純な日数の差であれば引き算だけで計算できますが、年数や月数を求めたい場合はDATEDIF関数、土日祝日を除きたい場合はNETWORKDAYS関数が便利です。
この記事では、Excelで日付の差を計算する方法を、具体的な数式と計算例を使ってわかりやすく解説します。
目次
Excelで日付の差を求める代表的な方法は、次の3つです。
| 計算方法 | できること | 使用例 |
|---|---|---|
| 日付の引き算 | 2つの日付の経過日数を計算 | =B2-A2 |
| DATEDIF関数 | 経過年数・月数・日数を計算 | =DATEDIF(A2,B2,”D”) |
| NETWORKDAYS関数 | 土日祝日を除いた営業日数を計算 | =NETWORKDAYS(A2,B2) |
「何日経過したか」を知りたいだけなら、日付の引き算が最も簡単です。年齢や勤続年数のように年・月単位で計算したい場合は、DATEDIF関数を使用します。
Excelでは、日付を数値として管理しているため、日付同士を引き算することで経過日数を求められます。
例えば、次のように日付を入力します。
| セル | 入力内容 |
|---|---|
| A2 | 2026/11/1(開始日) |
| B2 | 2026/11/10(終了日) |
C2セルに次の計算式を入力します。
=B2-A2
計算結果は「9」となります。
これは、11月1日から11月10日までに9日間が経過していることを意味します。
開始日を1日目として数え、終了日も含めたい場合は、引き算の結果に1を加えます。
=B2-A2+1
先ほどの例では、計算結果は「10」となります。
例えば、11月1日から11月10日までの宿泊対象期間やイベント開催期間など、開始日と終了日を両方含めて数える場合に使えます。
ただし、宿泊日数と宿泊数は異なります。11月1日にチェックインして11月10日にチェックアウトする場合、通常は9泊となるため、用途に合わせて計算方法を選びましょう。
DATEDIF関数は、2つの日付の間にある年数・月数・日数を求める関数です。
年齢、勤続年数、契約期間などを計算するときに便利です。
=DATEDIF(開始日,終了日,単位)
「単位」には、計算したい内容に応じて以下の文字を指定します。
| 単位 | 計算内容 |
|---|---|
| Y | 満年数 |
| M | 満月数 |
| D | 日数 |
| YM | 満年数を除いた残りの月数 |
| YD | 年数を除いた残りの日数 |
| MD | 月数・年数を除いた残りの日数 |
なお、「MD」には既知の計算上の制限があり、Microsoftも使用を推奨していません。正確な期間計算が必要な場合は注意してください。
開始日がA2、終了日がB2の場合、日数の差は次の式で求められます。
=DATEDIF(A2,B2,"D")
2026年11月1日から11月10日までであれば、結果は「9」です。
単純な日数の差であれば「=B2-A2」と同じ結果になります。
2つの日付の間に何年経過したかを求めたい場合は、「Y」を指定します。
=DATEDIF(A2,B2,"Y")
例えば、開始日が2020年4月1日、終了日が2026年11月1日であれば、結果は「6」となります。
満年数を求められるため、勤続年数や年齢の計算などに利用できます。
経過した満月数を求めたい場合は、「M」を指定します。
=DATEDIF(A2,B2,"M")
例えば、開始日が2026年1月1日、終了日が2026年11月1日であれば、結果は「10」となります。
月単位の契約期間やサービスの利用期間を確認するときに便利です。
「6年7か月」のように表示したい場合は、DATEDIF関数を組み合わせます。
=DATEDIF(A2,B2,"Y")&"年"&DATEDIF(A2,B2,"YM")&"か月"
開始日が2020年4月1日、終了日が2026年11月1日なら「6年7か月」と表示されます。
仕事の納期や営業日数を計算する場合、土日祝日を除いた日数を求めたいことがあります。
このような場合は、NETWORKDAYS関数が便利です。
A2に開始日、B2に終了日を入力し、次の式を使用します。
=NETWORKDAYS(A2,B2)
NETWORKDAYS関数は、開始日と終了日を含む期間から、土曜日と日曜日を除いた日数を返します。
例えば、2026年11月2日(月)から11月6日(金)までなら、結果は「5」です。
ただし、この式だけでは祝日は除外されません。
祝日を除外する場合は、Excelの別のセルに祝日の日付を入力し、その範囲を指定します。
例えば、E2からE20に祝日を入力した場合は、次の式になります。
=NETWORKDAYS(A2,B2,E2:E20)
指定した祝日と土日を除いた営業日数が計算されます。
祝日リストには、実際にExcelの日付として認識される値を入力してください。また、会社独自の休業日がある場合も、同じ範囲に追加することで除外できます。
なお、NETWORKDAYS関数は開始日と終了日を両方含めて計算するため、「開始日の翌日から何営業日経過したか」を調べる場合は、計算範囲を調整する必要があります。
日付を引き算した結果が「1900/1/9」のように表示される場合、結果を表示するセルの表示形式が「日付」になっている可能性があります。
この場合は、対象セルを選択し、セルの表示形式を「標準」または「数値」に変更してください。
経過日数が数値として表示されるようになります。
DATEDIF関数では、開始日が終了日より後の日付になっていると、通常「#NUM!」エラーが表示されます。
また、日付が文字列として入力されている場合や、関数の単位指定が間違っている場合も、正しく計算できないことがあります。
開始日・終了日・単位の指定を確認してください。
DATEDIF関数は、Excelの関数候補やヘルプに表示されない場合があります。
ただし、対応するExcelでは、セルに直接「=DATEDIF(」と入力して使用できます。
入力候補に表示されないからといって、必ずしも使用できないわけではありません。
終了日が開始日より前の場合、単純な引き算ではマイナスの値になります。
日付の前後に関係なく、差の絶対値だけを求めたい場合はABS関数を使用します。
=ABS(B2-A2)
ただし、この方法では日付の前後関係がわからなくなるため、経過日数や期限の管理に使用する場合は注意しましょう。
Excelを開かずに、2つの日付の間の日数を手軽に調べたい場合は、ブラウザで使える日数計算ツールも便利です。
budsblueの「日数計算・日数カウントツール」なら、開始日と終了日を指定して日数を確認できます。
日付の差を一度だけ調べたい場合や、Excelの数式を入力する手間を省きたい場合に活用してください。
はい。TODAY関数を使えば、今日の日付を自動取得して経過日数を計算できます。
開始日がA2セルに入力されている場合は、次の式を使用します。
=TODAY()-A2
Excelファイルを開いたときなどの再計算時に、現在の日付を基準とした経過日数が更新されます。
開始日がA2セルにある場合は、次の式で30日後の日付を求められます。
=A2+30
計算結果が数値で表示される場合は、セルの表示形式を「日付」に変更してください。
単純な日数の差を求めるなら、日付の引き算がおすすめです。
一方、年齢や勤続年数など、満年数・満月数を求めたい場合はDATEDIF関数が適しています。
NETWORKDAYS関数を使用します。土日は自動的に除外されますが、祝日は別途リストを指定する必要があります。
また、土日以外を休日に設定したい場合は、NETWORKDAYS.INTL関数も利用できます。
Excelで日付の差を計算する方法は、求めたい内容によって異なります。
用途に合った計算方法を選べば、Excelで日付の差を簡単に求められます。
Excelを使わずに日数だけを確認したい場合は、無料の日数計算ツールも活用してみてください。