Menu

Excelで2つの日付の間の日数を計算する: 引き算、DAYS、DATEDIF

=B2-A2は、A2の日付からB2の後の日付までの日数を返します。DAYSでの数え方、両端の日を含める方法、週数、月数、年数、営業日数の出し方を学びます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=B2-A2は、A2の日付からB2の後の日付までの日数を返します。Excelはすべての日付を日数の整数として保存している(2026-03-15は46096)ので、日付から日付を引くと、その間の日数になります。

注文から配達までの日数
C2
ABC
1OrderedDeliveredDays
22026-03-022026-03-097
32026-03-052026-03-072
42026-03-102026-04-0223
52026-03-282026-04-036
62026-12-292027-01-046
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

注文はそれぞれ7日、2日、23日、6日、6日かかりました。引き算は月や年の境目も自分で処理します。最後の注文は年をまたいでいますが、6日と数えます。配達日を変えると、日数もそれに合わせて変わります。前の日付がB列にあると、結果はマイナスになります。7ではなく-7です。

DAYS関数

=DAYS(end_date, start_date)は同じ引き算を、終了日を先にして行います。=B2-A2と同じ数を返し、これを選ぶいちばんの理由は、名前が数式の内容を表していることです。

引き算とDAYS
D2
ABCD
1StartEndB2-A2DAYS
22026-01-152026-03-105454
32026-02-012026-03-012828
42024-02-012024-03-012929
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

2026年2月は28日、2024年2月は29日です。Excelはうるう年も含めて暦を知っています。引数の順番に注意してください。=DAYS(A2,B2)は1行目で-54を返します。DAYSにはExcel 2013以降が必要で、引き算はどこでも使えます。

開始日と終了日を含めて日数を数える

引き算が数えるのは2つの日付の間の日数で、つまり泊数です。7月6日から7月10日までの予約は4泊ですが、7月6日から7月10日まで借りた車は5日分支払います。初日と最終日の両方を数えるときは1を足します。

泊数と日数
D2
ABCD
1FromToNightsDays (both counted)
22026-07-062026-07-1045
32026-07-312026-08-0112
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

2026-07-06から2026-07-06までの1日は、引き算では0、+1を付けると1です。日付のシートで起こる1日ずれのほとんどはここが原因なので、列を埋める前にどちらが必要かを決めてください。

2つの日付の間の週数、月数、年数

週数は日数を7で割ります。月と年は決まった日数ではないので、暦の満月数と満年数を数えるDATEDIFを使います。

週数、月数、年数
D2
ABCDEF
1StartEndWeeksFull weeksMonthsYears
22025-06-152026-09-3067.467151
32024-01-012026-01-01104.4104242
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

2025-06-15から2026-09-30までは67.4週、満67週、満15か月、満1年です。DATEDIFは前の日付を先に書く必要があり、逆だと#NUM!を返します。

2つの日付の間の営業日数

月曜から金曜だけを数えるにはNETWORKDAYS(start, end)を使います。開始日と終了日が平日なら両方を数え、3つ目の引数で祝日のリストを除くこともできます。祝日やほかの曜日の週末についてはNETWORKDAYSとWORKDAYで説明しています。

暦日数と営業日数
D2
ABCD
1StartEndCalendar daysWorking days
22026-03-022026-03-131210
32026-03-062026-03-0942
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

2026年3月2日から3月13日までは両端を数えて12日で、そのうち10日が平日です。金曜から次の月曜までは4日で、営業日は2日です。

練習: 配達にかかった日数

やってみよう
C2
ABC
1OrderedDeliveredDays
22026-05-182026-05-27
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: C2に、A2の注文日からB2の配達日まで、注文に何日かかったかを計算してください。

結果が日付や####で表示される理由

日付の引き算では、表示の問題が2つよく起こります:

  • 結果が日付に見える(1900-01-07、米国の設定では1/7/1900)。セルが日付の表示形式のままなので、7日がExcelの暦の7日目として表示されています。セルを選び、ホーム > 表示形式 > 標準を選んでください。
  • セルが#####で埋まる。 結果がマイナス(日付が逆)で、セルが日付の表示形式になっています。日付はマイナスになれません。日付を入れ替えるか、=ABS(B2-A2)を使うか、セルを標準の表示形式にしてマイナスの数を表示してください。

結果が#VALUE!なら、どちらかのセルに日付に見えるだけの文字列が入っています。たとえば米国式の日付に設定されたExcelでの15.03.2026です。=ISNUMBER(A2)で確かめてください。本物の日付ならTRUEを返します。

よくある質問

Excelで2つの日付の間の日数を計算するには?

後の日付から前の日付を引きます:=B2-A2。Excelは日付を日数として保存しているので、結果はその間の日数になります。=DAYS(B2,A2)も同じ結果です。

開始日と終了日を両方含めて日数を数えるには?

1を足します:=B2-A2+1。7月6日から7月10日までは、引き算では4日(ホテルの宿泊数)、両端を数えると5日(レンタルの日数)です。

Excelで2つの日付の間の月数を計算するには?

=DATEDIF(A2,B2,"M")で満月数を数えます。年数なら"Y"を使います。DATEDIFは前の日付を先に書く必要があります。

DAYSと日付の引き算の違いは何ですか?

結果に違いはありません。=DAYS(B2,A2)と=B2-A2は同じ日数を返します。DAYSは終了日を先に書き、Excel 2013以降が必要です。引き算はどのバージョンでも使えます。

Excelで2つの日付の間の週数を計算するには?

日数を7で割ります。=(B2-A2)/7は小数部分のある週数を、=INT((B2-A2)/7)は満週数を返します。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める