エクセルで日数・年数を計算する方法(DATEDIF関数・引き算・NETWORKDAYS)
エクセル(Excel)で「2つの日付のあいだが何日か」「入社から何年何か月か」「締め切りまでの営業日は何日か」を知りたい場面は、事務の仕事や家計管理でよくあります。使う道具は、引き算、DAYS関数、DATEDIF関数、NETWORKDAYS関数など、目的によって変わります。この記事では、それぞれの使い分けと、つまずきやすい点を、実際にExcelで動かして確かめた結果とあわせて説明します。
作成: くらしの道具箱(個人運営) 最終確認日: 2026年11月6日 連絡先: kurashidogubako77@gmail.com
まず知っておきたい:Excelの日付は「連番の数字」
Excelは、日付を「シリアル値」という連番の数字で保存しています。Microsoftの説明では、既定では1900年1月1日がシリアル値の1で、1日進むごとに1増えます。日付が数字だからこそ、日付どうしの引き算で日数が求められます。
計算結果が「1900/1/29」のような日付で表示されることがあります。この場合は、セルの表示形式を「標準」または「数値」に変えると、日数として表示されます(TODAY関数のMicrosoftの説明にも、シリアル値を表示するには書式を「標準」か「数値」にする、とあります)。
以下の例は、A2に開始日、B2に終了日が入っているものとします。
日数を求める:引き算とDAYS関数
日数だけを知りたいなら、いちばん簡単なのは引き算です。
| 数式 | 意味 | 2026/4/1と2026/4/30の結果 |
|---|---|---|
| =B2-A2 | 終了日から開始日を引く | 29 |
| =DAYS(B2,A2) | DAYS(終了日, 開始日)。引数の順番に注意 | 29 |
| =B2-A2+1 | 開始日と終了日の両方を数えに入れる | 30 |
引き算とDAYS関数は、どちらも開始日を数えに入れません。4月1日から4月30日なら、差は29です。「4月1日も1日目として数えて、30日間」としたい場合は、1を足します。初日を数えるかどうかは、契約書や申請書の書き方で決まることなので、使い方の根拠を確認してから式を選んでください(考え方は営業日と日数の数え方で説明しています)。
開始日と終了日の順序が逆になると、結果は負の数になります(例:2026/4/1を終了日、2026/4/30を開始日にして計算すると-29)。今日から年末までの残り日数なら、=DATE(2026,12,31)-TODAY()のように書きます(2026年11月6日に開いたときの結果は55)。
年数・月数を求める:DATEDIF関数
「○年○か月」のように、年や月の単位で期間を知りたいときは、DATEDIF関数を使います。書き方は =DATEDIF(開始日, 終了日, "単位") です。
| 単位 | 意味 | 2001/6/1→2002/8/15の結果 |
|---|---|---|
| "Y" | 満の年数 | 1 |
| "M" | 満の月数 | 14 |
| "D" | 日数 | 440 |
| "YM" | 年を除いた月数 | 2 |
| "YD" | 年を除いた日数 | 75 |
| "MD" | 年・月を除いた日数(使用は非推奨) | 14 |
"D"の440と"YD"の75は、Microsoftの公式ページに載っている例と同じ結果になりました。
例:満年齢、「○年○か月」の表示
- 満年齢:
=DATEDIF(生年月日, TODAY(), "Y")。2000年3月15日生まれなら、2026年3月14日は25、3月15日は26になります。 - ○年○か月:
=DATEDIF(A2,B2,"Y")&"年"&DATEDIF(A2,B2,"YM")&"か月"。2020年4月1日から2026年11月6日なら「6年7か月」と表示されます。
DATEDIFの注意点
- 開始日が終了日より後だと、結果は#NUM!エラーになります。
- Microsoftは、DATEDIFは古いLotus 1-2-3のブックに対応するために用意されている関数で、特定の場合に誤った結果を返すことがあると説明しています。特に"MD"は、負の数、ゼロ、不正確な結果になることがあるため、使用をすすめていません。実際に、2016/1/31から2016/3/1を"MD"で計算すると-1が返りました。
- 月末日が開始日のとき、短い月では「まだ1か月たっていない」と判定されます。2024/1/31から2024/2/29を"M"で計算すると0、3月1日にすると1になります。
- 終了日を数えに入れた期間(勤続年数など)を求めるなら、終了日に1を足します。たとえば入社日2020/4/1、最終日2026/3/31のとき、
=DATEDIF(入社日, 最終日+1, "Y")は6になります(最終日そのままでは5)。
営業日数を求める:NETWORKDAYS・WORKDAY
土日と祝日を除いた「営業日」を数えるには、NETWORKDAYS関数を使います。書き方は =NETWORKDAYS(開始日, 終了日, [祝日の範囲]) です。
- 開始日も終了日も数えに入ります。平日1日だけなら1、土曜日1日だけなら0になります。
- 祝日は自動では除かれません。祝日が入ったセルの範囲を3つ目の引数に指定する必要があります。
- 開始日と終了日を逆にすると、同じ大きさの負の数が返ります。
2026年4月27日(月)から5月8日(金)の例です。この期間の平日は10日で、そのうち4月29日、5月4日、5月5日、5月6日が祝日・休日なので、祝日を指定すると営業日は6日になります。
| 数式 | 結果 |
|---|---|
| =NETWORKDAYS(開始日, 終了日) | 10 |
| =NETWORKDAYS(開始日, 終了日, 祝日の範囲) | 6 |
| =NETWORKDAYS.INTL(開始日, 終了日, 11, 祝日の範囲)(日曜だけ休み) | 7 |
土曜日が営業日の会社など、休みが土日以外のときは、NETWORKDAYS.INTL関数の3つ目の引数で週末の曜日を指定します。1または省略で土日、11で日曜のみ、17で土曜のみです。0と1を7つ並べた文字列(月曜から順に、1が休み)でも指定できます。
「○営業日後の日付」を知りたいときは、WORKDAY関数が使えます。=WORKDAY(開始日, 営業日数, [祝日の範囲])で、開始日の翌日から数え始めます。2026年4月28日から5営業日後は、祝日を考えなければ5月5日、祝日(4/29、5/3〜5/6)を指定すると5月11日でした。
祝日の一覧を用意する
祝日の日付は、内閣府が「国民の祝日」として公表しています。2026年の祝日・休日は次のとおりです。振替休日(5月6日)と、前後が祝日にはさまれた休日(9月22日)も含まれています。
| 名称 | 日付 |
|---|---|
| 元日 | 2026年1月1日(木) |
| 成人の日 | 2026年1月12日(月) |
| 建国記念の日 | 2026年2月11日(水) |
| 天皇誕生日 | 2026年2月23日(月) |
| 春分の日 | 2026年3月20日(金) |
| 昭和の日 | 2026年4月29日(水) |
| 憲法記念日 | 2026年5月3日(日) |
| みどりの日 | 2026年5月4日(月) |
| こどもの日 | 2026年5月5日(火) |
| 休日(振替休日) | 2026年5月6日(水) |
| 海の日 | 2026年7月20日(月) |
| 山の日 | 2026年8月11日(火) |
| 敬老の日 | 2026年9月21日(月) |
| 休日(国民の休日) | 2026年9月22日(火) |
| 秋分の日 | 2026年9月23日(水) |
| スポーツの日 | 2026年10月12日(月) |
| 文化の日 | 2026年11月3日(火) |
| 勤労感謝の日 | 2026年11月23日(月) |
会社が独自に定めた休日(年末年始、夏季休暇など)は、祝日の範囲に自分で追加してください。
よくあるつまずき
- 日付が文字列になっている。NETWORKDAYSなどでは、日付を文字列で入力するとエラーが出ることがあるため、Microsoftの説明ではDATE関数(例:DATE(2026,5,8))での入力がすすめられています。セルに入れる場合も、日付として認識されているか確認してください(左寄せになっていたら文字列の可能性があります)。
- 結果が日付の見た目になる。表示形式を「標準」に変えます。
- "MD"を使ってしまった。日にちの端数を求めたいときは、別の方法を検討してください。
- TODAYの結果が変わる。TODAY関数は、ブックを開いたときや再計算のたびに、その日の日付に更新されます。あとから見返す書類の日数は、固定の日付を入れておくほうが安全です。
Excelを使わずにすぐ確かめたいときは、日数計算ツールが使えます。また勤続年数や有給休暇の付与日は、勤続年数の数え方の記事で考え方を説明しています。
よくある質問
- 2つの日付のあいだの日数だけ知りたいときは、どの方法がよいですか?
- 引き算(=B2-A2)かDAYS関数(=DAYS(B2,A2))がいちばん簡単です。どちらも開始日は数えません。開始日も1日目に数えたいときは、結果に1を足します。
- DATEDIFの"MD"は使ってよいですか?
- Microsoftが使用をすすめていない単位です。負の数、ゼロ、不正確な結果になることがあります。日にちを求めたいときは、別の式で確認してください。
- 祝日を自動で除いて営業日を数えられますか?
- NETWORKDAYSは土日だけを自動で除きます。祝日は、祝日の一覧をセルに用意して、3つ目の引数に指定する必要があります。内閣府が国民の祝日の一覧(CSV形式)を公開しています。
- 土曜日も営業日のときは、どうすればよいですか?
- NETWORKDAYS.INTL関数を使い、週末の引数に11(日曜のみ休み)を指定します。
- DATEDIFで#NUM!エラーが出ます。
- 開始日が終了日より後になっていないか確認してください。DATEDIFは、開始日が終了日より大きいと#NUM!を返します。
参考にした資料
- Microsoft サポート「DATEDIF 関数」:https://support.microsoft.com/ja-jp/excel/functions/datedif-function
- Microsoft サポート「NETWORKDAYS 関数」:https://support.microsoft.com/ja-jp/excel/functions/networkdays-function
- Microsoft サポート「NETWORKDAYS.INTL 関数」:https://support.microsoft.com/ja-jp/office/networkdays-intl-%E9%96%A2%E6%95%B0-a9b26239-4f20-46a1-9ab8-4e925bfd5e28
- Microsoft サポート「WORKDAY 関数」:https://support.microsoft.com/ja-jp/excel/functions/workday-function
- Microsoft サポート「DAYS 関数」:https://support.microsoft.com/ja-jp/excel/functions/days-function
- Microsoft サポート「TODAY 関数」:https://support.microsoft.com/ja-jp/excel/functions/today-function
- 内閣府「国民の祝日について」(令和8年・令和9年の祝日、CSVの掲載):https://www8.cao.go.jp/chosei/shukujitsu/gaiyou
上記は 2026年11月6日 に内容を確認しました。法令・制度は改正されることがあります。
この記事の数式の結果は、Microsoft 365版のExcelで実際に動かして確認したものです。Excelのバージョンや設定によって、表示が異なる場合があります。契約や申請の期限などの日数は、書類の定義を優先し、必要に応じて専門家にご相談ください。