スプレッドシートのDAYS関数の使い方|2つの日付間の日数を計算

スポンサーリンク

「プロジェクトの開始日から終了日まで何日あるんだろう?」。スプレッドシートで期限管理をしていると、こんな場面がよくありますよね。

日付を引き算すれば日数は出せますが、数式を見ただけでは「何を計算しているのか」が伝わりにくいです。

GoogleスプレッドシートのDAYS関数を使えば、2つの日付の間の日数を明快に求められます。数式の意図もひと目で読み取れますよ。

この記事ではDAYS関数の基本から実務活用まで解説します。TODAY関数との組み合わせやDATEDIFとの使い分けも紹介しますよ。

DAYS関数とは?スプレッドシートで日数を計算する関数

DAYS関数(読み方: デイズ関数)は、2つの日付の間の日数を整数で返す関数です。

名前は英語の「days(日数)」がそのまま関数名になっています。

たとえば「2025/4/1」と「2025/9/30」の間が何日あるかを、1つの数式で求められます。うるう年の2月29日も自動で考慮してくれるので、手計算の必要はありません。

NOTE

DAYS関数はGoogleスプレッドシートとExcel(2013以降)の両方で使えます。構文も同じなので、ファイルを変換しても数式はそのまま動きますよ。

DAYS関数の書き方|構文と引数

基本構文

=DAYS(終了日, 開始日)

カッコの中に「終了日」「開始日」の2つを順番に入れます。どちらも必須です。

引数の詳細

引数必須/任意説明
終了日必須期間の終わりとなる日付(第1引数)
開始日必須期間の始まりとなる日付(第2引数)

WARNING

引数の順番に注意してください。DAYS関数は終了日が先、開始日が後です。DATEDIF関数は「開始日, 終了日」の順番なので、逆になっている点がよくある間違いポイントですよ。

DAYS関数の基本的な使い方

セル参照で日数を求める

A2に開始日「2025/4/1」、B2に終了日「2025/9/30」が入っているとします。

=DAYS(B2, A2)

結果は「182」です。2つの日付の間には182日あるとわかります。

引数はセル参照で指定するのが基本です。日付データを変更するだけで結果が自動更新されますよ。

日付を直接入力する場合

セルを使わずに、数式内に日付を直接書くこともできます。

=DAYS("2025/9/30", "2025/4/1")

こちらも結果は「182」です。ちょっとした計算のときに便利ですが、日付を変更するたびに数式を書き直す必要があります。普段はセル参照を使いましょう。

DATE関数と組み合わせる

年・月・日がバラバラのセルに入っている場合は、DATE関数(年・月・日から日付を作る関数)を組み合わせます。

=DAYS(DATE(2025,9,30), DATE(2025,4,1))

DATE関数で日付データを作ってからDAYSに渡す形です。結果はもちろん「182」ですよ。

実務で使えるDAYS関数の活用例

残り日数カウント ── TODAY関数との組み合わせ

締め切りまであと何日か知りたいときは、TODAY関数(今日の日付を返す関数)と組み合わせます。

B2に期限日「2026/3/31」が入っているとして、次の数式を入力します。

=DAYS(B2, TODAY())

今日が2026/3/19なら結果は「12」です。期限まで残り12日とわかります。

TODAY関数はファイルを開くたびに自動で更新されます。毎日の残り日数を常に最新の状態で確認できますよ。

TIP

期限を過ぎるとマイナスの値が返ります。たとえば期限が3日前なら「-3」です。マイナスになったら「期限超過」と表示したい場合は、IF関数を組み合わせましょう。

=IF(DAYS(B2, TODAY()) < 0, "期限超過", DAYS(B2, TODAY()) & "日")

プロジェクトの経過率を計算する

プロジェクトの進捗を「経過率」で把握したい場面もありますよね。開始日がA2、終了日がB2に入っているとします。

=DAYS(TODAY(), A2) / DAYS(B2, A2)

分子が「開始日から今日までの日数」、分母が「開始日から終了日までの全日数」です。

A2が「2025/4/1」、B2が「2025/9/30」、今日が「2025/7/1」なら次のようになります。

  • 分子: DAYS(“2025/7/1”, “2025/4/1”) = 91日
  • 分母: DAYS(“2025/9/30”, “2025/4/1”) = 182日
  • 経過率: 91 / 182 = 0.5(50%)

セルの表示形式を「パーセント」にすれば「50%」と表示されます。ガントチャートの代わりに使えて便利ですよ。

日付の引き算とDAYS関数の違い

スプレッドシートでは、日付の引き算でも日数を求められます。

=B2 - A2

A2が「2025/4/1」、B2が「2025/9/30」なら、引き算でも結果は「182」です。DAYS関数と同じ値になります。

では、なぜDAYS関数が用意されているのでしょうか?違いを整理してみましょう。

項目日付の引き算(=B2-A2)DAYS関数(=DAYS(B2,A2))
結果同じ(日数を返す)同じ(日数を返す)
時刻を含む場合小数になる(例: 182.5)整数のみ(時刻は無視)
数式の読みやすさ何を計算しているか分かりにくい「日数を求めている」と一目瞭然
チーム共有時意図の説明が必要な場合がある関数名で意図が伝わる

実務的に大きな違いが出るのは「時刻を含む日付」を扱うときです。引き算だと「182.5」のような小数になりますが、DAYS関数なら時刻部分を無視して整数だけを返します。

数式を他の人と共有する場面が多いなら、DAYS関数を使うほうが意図が明確になりますよ。

DATEDIFとの使い分け|引数の順序に注意

引数の順序が真逆

DAYS関数とDATEDIF関数は、引数の順番が逆です。ここが一番混同しやすいポイントなので、しっかり押さえておきましょう。

項目DAYS関数DATEDIF関数
構文=DAYS(終了日, 開始日)=DATEDIF(開始日, 終了日, 単位)
第1引数終了日開始日
第2引数開始日終了日
返す値日数のみ年・月・日を単位で指定
逆順のとき負の値を返す(エラーなし)#NUM!エラーが発生

特に注目してほしいのが「逆順のとき」の挙動です。DAYS関数は開始日と終了日を逆にしてもエラーにならず、マイナスの値を返します。一方、DATEDIF関数は#NUM!エラーになります。

=DAYS("2025/4/1", "2025/9/30")    → -182(エラーなし)
=DATEDIF("2025/9/30", "2025/4/1", "D")  → #NUM!(エラー)

DAYS関数のほうがエラーに強いと言えますね。

DAYS・DATEDIF・日付引き算の使い分け早見表

「結局どれを使えばいいの?」と迷ったときは、次の表で判断してみてください。

やりたいことおすすめの方法数式の例
2つの日付の日数だけを知りたいDAYS関数または引き算=DAYS(B2, A2)
年数・月数で期間を求めたいDATEDIF関数=DATEDIF(A2, B2, "Y")
「X年Yヶ月」形式で表示したいDATEDIF関数Y + YM の組み合わせ
土日祝を除いた営業日を数えたいNETWORKDAYS関数=NETWORKDAYS(A2, B2)
数式の意図を明確にしたいDAYS関数=DAYS(B2, A2)

日数だけで十分な場面ならDAYS関数がシンプルです。年数や月数も必要な場合はDATEDIF関数を使ってください。営業日ベースの計算にはNETWORKDAYS関数(土日祝を除いた日数を返す関数)が適しています。

よくあるエラーと対処法

#VALUE!エラー(日付が文字列の場合)

DAYS関数に渡した値が正しい日付データになっていないと、#VALUE!エラーが発生します。

よくある原因は次の3つです。

  • セルに日付が「文字列」として入力されている
  • 全角数字が混じっている(例: 「2025/4/1」)
  • 存在しない日付を指定している(例: 「2025/2/30」)

対処法は、セルの表示形式を「日付」に変更するか、DATE関数で日付データを作り直すことです。

=DAYS(DATE(2025,9,30), DATE(2025,4,1))

DATE関数を経由すれば、確実に正しい日付データとして処理されます。

結果がマイナスになる場合

DAYS関数は終了日が開始日より前だと、マイナスの値を返します。これはエラーではなく正常な動作です。

=DAYS("2025/4/1", "2025/9/30")   → -182

「引数の順番を間違えた」ケースがほとんどです。終了日を第1引数、開始日を第2引数に指定しているか確認してください。

常に正の値がほしい場合は、ABS関数(絶対値を返す関数)で囲む方法もあります。

=ABS(DAYS(A2, B2))

これなら引数の順番に関係なく、常にプラスの日数が返りますよ。

まとめ

DAYS関数は、2つの日付の間の日数を整数で返すシンプルな関数です。

ポイントを整理します。

  • 構文は =DAYS(終了日, 開始日) の2引数
  • 終了日が第1引数、開始日が第2引数(DATEDIFとは逆順)
  • 戻り値は整数のみ(時刻を含んでいても小数にならない)
  • =DAYS(期限日, TODAY()) で残り日数を自動カウントできる
  • 日数だけならDAYS関数、年月日単位ならDATEDIF関数と使い分ける
  • 引き算でも同じ結果は出るが、DAYS関数のほうが意図が明確
場面使う関数
日数だけ知りたいDAYS関数
年・月の単位も必要DATEDIF関数
今日の日付を基準にしたいTODAY関数 と組み合わせ
年月日から日付を作りたいDATE関数 と組み合わせ

まずは =DAYS(B2, A2) で2つの日付の日数を計算するところから試してみてください。

タイトルとURLをコピーしました