=B2-A2は、A2の日付からB2の後の日付までの日数を返します。Excelはすべての日付を日数の整数として保存している(2026-03-15は46096)ので、日付から日付を引くと、その間の日数になります。
| A | B | C | |
|---|---|---|---|
| 1 | Ordered | Delivered | Days |
| 2 | 2026-03-02 | 2026-03-09 | 7 |
| 3 | 2026-03-05 | 2026-03-07 | 2 |
| 4 | 2026-03-10 | 2026-04-02 | 23 |
| 5 | 2026-03-28 | 2026-04-03 | 6 |
| 6 | 2026-12-29 | 2027-01-04 | 6 |
注文はそれぞれ7日、2日、23日、6日、6日かかりました。引き算は月や年の境目も自分で処理します。最後の注文は年をまたいでいますが、6日と数えます。配達日を変えると、日数もそれに合わせて変わります。前の日付がB列にあると、結果はマイナスになります。7ではなく-7です。
DAYS関数
=DAYS(end_date, start_date)は同じ引き算を、終了日を先にして行います。=B2-A2と同じ数を返し、これを選ぶいちばんの理由は、名前が数式の内容を表していることです。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Start | End | B2-A2 | DAYS |
| 2 | 2026-01-15 | 2026-03-10 | 54 | 54 |
| 3 | 2026-02-01 | 2026-03-01 | 28 | 28 |
| 4 | 2024-02-01 | 2024-03-01 | 29 | 29 |
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を足します。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | From | To | Nights | Days (both counted) |
| 2 | 2026-07-06 | 2026-07-10 | 4 | 5 |
| 3 | 2026-07-31 | 2026-08-01 | 1 | 2 |
2026-07-06から2026-07-06までの1日は、引き算では0、+1を付けると1です。日付のシートで起こる1日ずれのほとんどはここが原因なので、列を埋める前にどちらが必要かを決めてください。
2つの日付の間の週数、月数、年数
週数は日数を7で割ります。月と年は決まった日数ではないので、暦の満月数と満年数を数えるDATEDIFを使います。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Start | End | Weeks | Full weeks | Months | Years |
| 2 | 2025-06-15 | 2026-09-30 | 67.4 | 67 | 15 | 1 |
| 3 | 2024-01-01 | 2026-01-01 | 104.4 | 104 | 24 | 2 |
2025-06-15から2026-09-30までは67.4週、満67週、満15か月、満1年です。DATEDIFは前の日付を先に書く必要があり、逆だと#NUM!を返します。
2つの日付の間の営業日数
月曜から金曜だけを数えるにはNETWORKDAYS(start, end)を使います。開始日と終了日が平日なら両方を数え、3つ目の引数で祝日のリストを除くこともできます。祝日やほかの曜日の週末についてはNETWORKDAYSとWORKDAYで説明しています。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Start | End | Calendar days | Working days |
| 2 | 2026-03-02 | 2026-03-13 | 12 | 10 |
| 3 | 2026-03-06 | 2026-03-09 | 4 | 2 |
2026年3月2日から3月13日までは両端を数えて12日で、そのうち10日が平日です。金曜から次の月曜までは4日で、営業日は2日です。
練習: 配達にかかった日数
| A | B | C | |
|---|---|---|---|
| 1 | Ordered | Delivered | Days |
| 2 | 2026-05-18 | 2026-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)は満週数を返します。