doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

Excelで日付に日数を足す方法|+7・EDATE・WORKDAYの使い分け早見表

スポンサーリンク

Excelで日付に日数を足すなら、基本は =A2+7 の足し算だけでOKです。月単位で足すならEDATE、土日祝を飛ばした営業日で足すならWORKDAY。足したい「単位」で関数を切り替えるだけで、納期計算も契約更新日も自動化できます。

日付計算は「関数を覚える」より「どの単位で足したいのか」を決めるほうが先です。日・月・年・営業日で正解の関数が変わるので、その分岐だけ頭に入れておけば迷いません。

Excelで日付に日数を足す方法|+7・EDATE・WORKDAYの使い分け早見表のサンプル ▲ Date and Time サンプル

目次

日付の足し算が「+」でできる理由

Excelの日付は、見た目こそ「2026/8/28」ですが、中身はシリアル値という単なる数値です。1900年1月1日を1として、1日進むごとに1ずつ増えます。2026年8月28日なら46262という数字が入っています。

数値である以上、四則演算がそのまま使えます。ここが日付計算のすべての土台です。

日単位で足す:基本の足し算

A2に基準日が入っているとして、一番シンプルなパターンです。

=A2+7        7日後
=A2+30       30日後
=A2-1        前日
=TODAY()+14  今日から14日後

TODAY関数は引数なしで今日の日付を返します。=TODAY()-A2 なら「基準日から今日まで何日経ったか」が出ます。

期間の日数も同じ考え方で =B2-A2 と引き算するだけ。ただし「初日を含めた日数」が欲しい場合は =B2-A2+1 にしてください。8/1から8/3を「3日間」と数えるか「2日後」と数えるかは、実務では地味に揉めるポイントです。

月単位で足す:EDATE

「3か月後」を =A2+90 で計算するのは誤りです。月の日数は28〜31日でバラバラなので必ずズレます。

=EDATE(A2, 3)     3か月後
=EDATE(A2, -6)    6か月前
=EDATE(A2, 12)    1年後

第2引数に月数を入れるだけ。マイナスなら過去に遡れます。契約更新日、サブスクの請求日、保証期限はこれ一本で処理できます。

月末日を足すときの挙動

EDATEは日付部分を維持しようとするため、1月31日に1か月足すと存在しない2月31日ではなく、2月28日(うるう年なら29日)に丸められます

「毎月末日」を出したいなら、EOMONTHを使うのが確実です。

=EOMONTH(A2, 0)     当月の月末日
=EOMONTH(A2, 1)     翌月の月末日
=EOMONTH(A2, 0)+1   翌月の1日

EOMONTH(A2,1) は翌月末なので、これに+1すると翌々月の1日になってしまいます。「翌月1日」は当月末(第2引数0)に+1が正解です。締め日が月末の請求書テンプレートは、これで年をまたいでも壊れません。

年単位で足す:EDATEかDATE

「1年後」は =EDATE(A2, 12) が最短です。年を明示したいならDATE関数で組み立てる方法もあります。

=DATE(YEAR(A2)+1, MONTH(A2), DAY(A2))

YEAR・MONTH・DAYで分解し、年だけ+1して組み直す形です。「どこを動かしているか」がひと目で分かる反面、うるう年で挙動が変わります。2024/2/29に使うと存在しない2025/2/29が繰り上がって2025/3/1を返します。同じ日付にEDATEを使えば2025/2/28です。契約満了日のように「うるう年でも月内に収めたい」場面ではEDATEを選んでください。

営業日で足す:WORKDAY

「発注から5営業日後に納品」のように土日祝を飛ばすならWORKDAY関数です。

=WORKDAY(A2, 5)              5営業日後(土日を除外)
=WORKDAY(A2, 5, $F$2:$F$20)  祝日リストも除外
=WORKDAY(A2, -5)             5営業日前(納期から着手日を逆算)

第3引数に祝日を並べたセル範囲を渡すと、その日付もスキップします。シートの隅に「祝日」列を作り、$ で絶対参照にしておけば下方向にコピーしてもズレません。マイナスを入れれば逆算もでき、納期から着手日を割り出すのに便利です。

営業日数を数える:NETWORKDAYS

=NETWORKDAYS(A2, B2, $F$2:$F$20)

注意点は、開始日と終了日の両方を含んでカウントすることです。8/3(月)〜8/7(金)は「5」を返します。日単位の引き算が「差」を返すのに対し、こちらは最初から「日数」を返す設計なので、+1 は不要です。ここを混同すると工数見積もりが1日ズレます。

土日以外を休みにしたい場合

シフト制や水曜定休の職場ではWORKDAY.INTLを使い、第3引数で休日パターンを指定します。

=WORKDAY.INTL(A2, 5, "0010000")   水曜のみ定休(月曜始まり7文字、1が休み)
=WORKDAY.INTL(A2, 5, "0000010")   土曜のみ休み
=WORKDAY.INTL(A2, 5, 11)          日曜のみ休み(番号指定)

文字列指定は月〜日の7文字で、休む曜日を1にします。番号指定は覚えるのが手間なので、迷ったら文字列指定に統一するほうが確実です。

実務での通し例:発注から請求まで

各関数は組み合わせてこそ効きます。1行で完結する納期・請求管理はこう組みます。

項目 数式
A2 発注日 手入力
B2 納品日(5営業日後) =WORKDAY(A2,5,$F$2:$F$20)
C2 締め日(納品月の月末) =EOMONTH(B2,0)
D2 支払期日(翌月末) =EOMONTH(B2,1)
E2 着手期限(納品の3営業日前) =WORKDAY(B2,-3,$F$2:$F$20)

A2に日付を入れるだけで、納品・締め・入金・着手期限まで自動で埋まります。F列に祝日を並べておけば、年が変わってもリストを差し替えるだけで使い続けられます。

つまずきやすい3つのポイント

結果が5桁の数字になる

=A2+7 の結果が「46269」と表示されたら、セルの表示形式が標準になっているだけです。Ctrl + Shift + 3 を押すか、「ホーム」タブから「短い日付形式」を選べば直ります。計算自体は合っているので、数式を書き直す必要はありません。

TODAYは開くたびに変わる/NOWは時刻を含む

TODAY関数は再計算のたびに更新される揮発性関数です。「入力した日を記録したい」用途には向きません。その場合は Ctrl + ; で日付を値として入力します。

似た関数のNOWは時刻まで含む点に注意してください。=NOW()-A2 は小数(時間の端数)を含むため、「期限まであと何日」の比較で意図せず1日ズレることがあります。日付だけを扱いたい場面では必ずTODAYを使うか、=INT(NOW()) で切り捨ててください。

文字列の日付には足せない

他システムからコピーした「2026年8月28日」や「2026.08.28」は、見た目が日付でも文字列のことがあります。セルが左寄せなら文字列のサインです。

DATEVALUE関数で変換するか、「データ」→「区切り位置」で最後に「日付」を指定して一括変換します。文字列のまま足すと #VALUE! エラーになります。

使い分け早見表

やりたいこと 使う関数
○日後 足し算 =A2+7
今日から○日後 TODAY =TODAY()+30
○か月後 EDATE =EDATE(A2,3)
○年後 EDATE =EDATE(A2,12)
月末日 EOMONTH =EOMONTH(A2,0)
翌月1日 EOMONTH =EOMONTH(A2,0)+1
○営業日後 WORKDAY =WORKDAY(A2,5,$F$2:$F$20)
○営業日前 WORKDAY =WORKDAY(A2,-5,$F$2:$F$20)
営業日数を数える NETWORKDAYS =NETWORKDAYS(A2,B2,$F$2:$F$20)
休日を自由指定 WORKDAY.INTL =WORKDAY.INTL(A2,5,"0010000")

まとめ

日付の加算は「単位を決めれば関数が決まる」構造です。日ならそのまま足す、月と年ならEDATE、営業日ならWORKDAY。この3分岐で大半の実務は片付きます。

そのうえで、月末処理にはEOMONTH、土日以外の休みにはWORKDAY.INTLを押さえておけば、テンプレートが年をまたいでも壊れません。まずは手元の管理表で =TODAY()+30 を試し、次に上の通し例をそのまま1行組んでみてください。期限管理の自動化はそこから始まります。


関連記事

あわせてチェック