Excelで「2つの日付の間が何日あるか」を計算したいこと、ありますよね。引き算でもできますが、表示形式が日付のままになって数値として扱えなかったり、見た目が崩れたりと地味にハマるポイントがあります。
そんなときに使いたいのが DAYS関数 です。この記事では、DAYS関数の基本から実務での活用パターン、似た関数との使い分けまで解説します。
この記事は次のような人におすすめ
– 2つの日付の日数差を正確に求めたい
– 引き算とDAYS関数の違いがわからない
– DATEDIF関数やNETWORKDAYS関数との使い分けを知りたい
DAYS関数とは?
DAYS関数は、2つの日付の間の日数を求める関数です。読み方は「デイズ」で、英語の Days(日数) がそのまま名前になっています。
「開始日から終了日まで何日か」をシンプルに返してくれます。Excel 2013以降で使える関数です。
たとえば、2026年1月1日から2026年3月31日までの日数は 89日 です。DAYS関数なら1つの数式でこの答えが出ます。
ExcelのDAYS関数の書き方
基本構文
=DAYS(終了日, 開始日)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 終了日 | 必須 | 期間の終わりの日付 |
| 開始日 | 必須 | 期間の始まりの日付 |
引数の順番に注意してください。終了日が先、開始日が後 です。DATEDIF関数は「開始日, 終了日」の順番なので、混同しないようにしましょう。
引数の覚え方
「終了日 − 開始日」の引き算をイメージすると覚えやすいですよ。引かれる数(終了日)が先にくる、と考えてみてください。
DAYS関数の基本的な使い方
2つの日付の日数差を求める
A1に「2026/1/1」、B1に「2026/3/31」と入っている場合を見てみましょう。
=DAYS(B1, A1)
結果: 89
B1(終了日)からA1(開始日)を引いた日数が返ります。結果は整数なので、そのまま計算に使えます。
終了日が開始日より前の場合
DAYS関数は、終了日が開始日より前でもエラーになりません。
=DAYS("2026/1/1", "2026/3/31")
結果: -89
マイナスの値が返ります。「期限切れかどうか」の判定に使えるので、これは便利な仕様です。
文字列の日付を指定する
DAYS関数はセル参照だけでなく、文字列で直接日付を指定することもできます。
=DAYS("2026/12/31", "2026/1/1")
結果: 364
文字列の日付は内部で自動的に日付データに変換されます。ただし、セル参照のほうが入力ミスを防げるのでおすすめです。
開始日を含めた日数を求める(+1問題)
DAYS関数は「終了日 − 開始日」の差を返します。つまり、開始日そのものは日数に含まれません。
たとえば、1月1日から1月3日までの「滞在日数」を求めたい場合です。
=DAYS("2026/1/3", "2026/1/1")
結果: 2
1月1日・2日・3日の3日間を数えたいなら、結果に +1 する必要があります。
=DAYS("2026/1/3", "2026/1/1") + 1
結果: 3
「当日を含むかどうか」は業務によって変わります。イベントの開催日数や旅行の宿泊数など、当日を含めるケースでは +1 を忘れないようにしてください。
実務での活用例
納期までの残り日数を表示する
TODAY関数と組み合わせると、納期までの残り日数をリアルタイムで表示できます。A2に納期が入っている場合です。
=DAYS(A2, TODAY())
TODAY関数はファイルを開くたびに当日の日付を返します。納期が過ぎるとマイナスになるので、期限切れの判定にも使えますよ。
契約の残り日数を管理する
契約終了日(B列)から今日までの残り日数を表示し、30日以内なら「更新間近」と表示する例です。
=IF(DAYS(B2, TODAY()) <= 30, "更新間近", DAYS(B2, TODAY()) & "日")
残り日数が30日以下になったら「更新間近」、それ以外なら「○○日」と表示されます。
プロジェクトの経過日数を計算する
開始日(A列)から今日までの経過日数を求める場合です。
=DAYS(TODAY(), A2)
ここでは TODAY() が終了日の位置にきます。「今日 − 開始日」で経過日数を計算しているわけですね。
2つの日付列から一括で日数を計算する
開始日(A列)と終了日(B列)が並んでいるリストで、C列に日数を一括表示する場合です。
=DAYS(B2, A2)
C2にこの数式を入力し、下方向にコピーすればリスト全体の日数を一気に計算できます。
DAYS関数・引き算・DATEDIF・NETWORKDAYSの使い分け
Excelには日数を計算する方法がいくつかあります。それぞれの違いを表で整理しました。
| 比較項目 | DAYS関数 | 引き算(B1-A1) | DATEDIF関数 | NETWORKDAYS関数 |
|---|---|---|---|---|
| 戻り値 | 日数(整数) | 日数(※表示形式に注意) | 年/月/日を指定可 | 営業日数 |
| 引数の順番 | 終了日, 開始日 | 任意 | 開始日, 終了日 | 開始日, 終了日 |
| 負の値 | 返る | 返る | #NUM! エラー | 返る |
| 文字列日付の対応 | 自動変換 | エラーになる場合あり | 自動変換 | 自動変換 |
| 土日・祝日の除外 | 不可 | 不可 | 不可 | 可 |
| 対応バージョン | 2013以降 | すべて | すべて(非公式) | すべて |
どれを使うべき? 判断フロー
迷ったときは、以下の基準で選んでみてください。
- 土日・祝日を除いた営業日数を求めたい → NETWORKDAYS関数
- 年数や月数の単位で差を求めたい → DATEDIF関数
- 単純な日数差を求めたい → DAYS関数 or 引き算
- 文字列日付を扱う可能性がある → DAYS関数(自動変換してくれる)
- Excel 2010以前の環境で使う → 引き算
DAYS関数と引き算は結果自体は同じです。ただし、引き算はセルの表示形式が「日付」のままだと正しい数値が表示されないことがあります。DAYS関数なら必ず整数が返るので、表示形式のトラブルを避けたいならDAYS関数がおすすめです。
DATEDIF関数の注意点
DATEDIF関数は公式のサポートページに掲載されていない非公式関数です。動作に問題はありませんが、Excelの関数入力時に候補として表示されません。日数だけの計算ならDAYS関数を使うほうが安心です。
よくあるエラーと対処法
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 日付として認識できない文字列を渡した | セル参照を使うか、「2026/1/1」のように正しい日付形式で入力する |
| #NUM! | 日付の範囲外の数値を渡した | 日付として有効な値かどうかを確認する |
| 結果が日付のように表示される | セルの表示形式が「日付」になっている | セルの表示形式を「標準」または「数値」に変更する |
| 期待と1日ズレる | 開始日を含めて数えている前提だった | 当日を含める場合は結果に +1 する |
| 大きな数値が表示される | 引数に日付ではなく数値が入っている | 引数のセルが正しい日付データかどうかを確認する |
表示形式のトラブルを防ぐコツ
DAYS関数の結果が「1900/3/30」のような日付で表示されたら、表示形式が原因です。セルを選択して Ctrl + 1 → 「標準」を選べば正しい数値が表示されますよ。
まとめ
DAYS関数は、2つの日付の日数差をシンプルに求められる関数です。
- =DAYS(終了日, 開始日) で日数を返す。引数は終了日が先
- 終了日が開始日より前なら マイナスの値 が返る(エラーにならない)
- TODAY関数と組み合わせれば 残り日数のリアルタイム表示 ができる
- 開始日を含めたい場合は結果に +1 する
- 引き算と結果は同じだが、表示形式トラブルがないのがDAYS関数の強み
日付の引き算で表示が崩れて困った経験がある方は、DAYS関数に切り替えてみてください。数式の意味もわかりやすくなりますよ。
DATE関数の使い方やDATEDIF関数の使い方もあわせてチェックすると、Excelの日付操作がもっとスムーズになります。日付計算完全攻略記事もぜひ参考にしてみてください。
関連記事
関数一覧
どちらの関数一覧からでも各関数の解説記事へアクセスできます。
