【Excel】エクセルで1か月足す方法|日付を月単位で自動計算する
エクセルで請求日、契約更新日、納期、入会日などを管理していると、ある日付から1か月後の日付を自動で求めたい場面があります。
単純に30日を加算すると月末やうるう年でずれるため、月単位の計算には専用の関数を使うことが大切です。
この記事では、エクセルで日付に1か月足す基本の数式から、月末日の扱い、複数月をまとめて加算する方法、オートフィルによる連続入力までを解説します。
日付に1か月足す基本式
=EDATE(A2,1)
A2が元の日付、1が加算する月数です。
数式を入力したのに数字が表示される場合は、セルの表示形式を日付へ変更すると確認しやすくなります。
EDATE関数で1か月後の日付を求める方法
それではまず、もっとも確実に1か月後の日付を返すEDATE関数について解説していきます。
| 開始日 | 1か月後 |
|---|---|
| 2026/1/15 | 2026/2/15 |
EDATE関数は、基準日から指定した月数だけ前後へ移動した日付を返す関数です。
日数ではなく月として計算するため、月ごとの予定管理に向いています。
EDATE関数の基本構文
EDATE関数の構文は、EDATE 関数に開始日と月数を指定する形です。
=EDATE(開始日,月数)
開始日には元の日付が入ったセルを指定します。
月数には1か月後なら1、3か月後なら3、1か月前なら-1を入力します。
たとえばA2セルに2026年1月15日が入力されている場合、B2セルへ=EDATE(A2,1)と入力します。

計算結果は2026年2月15日になります。
セル参照を使うことで、開始日を変更したときも結果が自動で更新される仕組みです。
直接日付を書き込むよりも、元の日付を別セルで管理する方法が実務では便利でしょう。
数式を入力するセルと確定操作
開始日をA列、1か月後の日付をB列に並べる場合は、B2セルを選択して数式を入力します。
1行目には見出しがあるものとして、A1に開始日、B1に1か月後という項目名を置くと表の意味が分かりやすくなります。
数式バーまたはセル上で=EDATE(A2,1)と入力し、Enterキーで確定してください。

計算結果がシリアル値のような数字になったときは、数式の失敗ではなくセル書式が標準のままである可能性があります。
ホームタブの表示形式から短い日付または長い日付を選ぶと、日付として読みやすく表示されます。
なお、EDATE関数では開始日に文字列ではなく、エクセルが日付として認識する値を渡す必要があります。
オートフィルによる複数行へのコピー
複数の顧客や案件の日付を一度に計算するなら、B2セルの数式を下方向へコピーします。
B2セル右下の小さな四角であるフィルハンドルを、対象行までドラッグすると便利です。
隣のA列に連続したデータがある場合は、フィルハンドルをダブルクリックしても下端まで数式をコピーできます。
コピー先ではA2がA3、A4のように自動で変わる相対参照になるため、各行の日付に対応した1か月後が計算されます。
元の日付が空白の行まで式が入ることを避けたい場合は、データ範囲を選んでから貼り付ける方法も有効です。
【操作のポイント】最初の計算式は開始日と同じ行に入力し、表示形式を日付に整えてからオートフィルを実行します。
月末日を含む日付計算の注意点
続いては、月末日や存在しない日付をまたぐ場合のEDATE関数の動きを確認していきます。
| 開始日 | 数式 | 結果 |
|---|---|---|
| 2026/1/31 | =EDATE(A2,1) | 2026/2/28 |
1月31日の1か月後は2月31日にはならないため、EDATE関数はその月の最終日を返します。
存在しない日付を自動で月末へ調整できる点が、日数加算より優れている理由です。
31日から翌月へ進めた場合
1月31日に=EDATE(A2,1)を適用すると、通常年では2月28日、うるう年では2月29日になります。
同様に3月31日から1か月後を求めると4月30日です。
これはEDATE関数が、移動先の月に同じ日がなければ、その月で最後に存在する日付を選ぶためです。

月末の契約更新や支払期限を扱う表では、この挙動をあらかじめ理解しておく必要があります。
毎月末日を基準にしたい業務では、日付が28日や30日へ変わったあと、翌月も同じ基準で計算したいかを確認しましょう。
日数加算との違い
元の日付に30を加える=A2+30という式は、30日後を求める計算です。
この方法では1月15日から30日後が2月14日になるなど、暦月としての1か月後と一致しないことがあります。
=A2+30 は30日後を求める式です。
=EDATE(A2,1) は1か月後を求める式です。
請求サイクルや更新月には、原則としてEDATE関数を使います。

日数と月数は似ていても計算の意味が異なるため、用途に応じて式を分けることが重要です。
作業の締切が30日後なら日数加算、毎月同日が基準なら月数加算という考え方で選択できます。
月末固定で計算するEOMONTH関数
毎月の最終日を必ず求めたいときは、EOMONTH関数を使用します。
たとえばA2に開始日がある場合、=EOMONTH(A2,1)は翌月末日を返します。
2026年1月15日でも1月31日でも、結果は2026年2月28日です。
=EOMONTH(A2,0) は開始日が属する月の末日です。
=EOMONTH(A2,1) は翌月の末日です。
=EOMONTH(A2,-1) は前月の末日です。
売上締め、月次報告、月末請求などでは、EDATE関数よりEOMONTH関数のほうが意図に合う場合があります。
【操作のポイント】同日基準ならEDATE関数、月末固定ならEOMONTH関数を選び、月末をまたぐ前に結果を確認します。
複数月の加算と月数セルの参照方法
続いては、加算する月数をセルで指定し、3か月後や12か月後を自動計算する方法を確認していきます。
| 開始日 | 加算月数 | 計算結果 |
|---|---|---|
| 2026/4/10 | 3 | 2026/7/10 |
月数を固定の数字として式に書く代わりに、セルを参照すると表の使い回しがしやすくなります。
加算月数をセルで管理する数式
A2に開始日、B2に加算したい月数を入力し、C2に=EDATE(A2,B2)と入力します。
B2を1から6へ変更するだけで、C2は6か月後の日付へ更新されます。
数式を修正せず条件だけを変更できるため、管理表の入力ミスを減らせます。
=EDATE(A2,B2)
A2は基準日です。
B2は加算月数です。
月数に0を入力すれば開始日と同じ日付になり、負の数を入力すれば過去の日付を求められます。
たとえばB2が-2なら、A2の日付から2か月前の日付が返ります。
数式バーを使った入力イメージ
数式を入力したC2セルは赤枠で示したように、開始日と月数の両方を参照します。
数式の中でB2を直接書き換える必要はありません。
表の列構成を変えない限り、コピー後の数式も自然に各行の値を参照します。
固定セルを使う絶対参照
全行に同じ月数を適用したい場合は、月数をたとえばF1セルにまとめて入力します。
その場合、B2などの計算セルには=EDATE(A2,$F$1)と入力してください。
$記号を付けたF1は、下方向へ数式をコピーしてもF1のまま固定されます。
開始日は行ごとに変え、加算月数だけを固定する場合に絶対参照が役立ちます。
F1の数値を12にすれば、表全体を1年後の日付へ切り替えることも可能です。
【操作のポイント】月数が行ごとに異なる場合はB2参照、全行共通の場合は$F$1のような絶対参照を使います。
DATE関数を使った月単位の計算方法
続いては、年、月、日を分けて組み立てるDATE関数による日付計算を確認していきます。
| 開始日 | DATE関数の例 | 結果 |
|---|---|---|
| 2026/6/12 | =DATE(YEAR(A2),MONTH(A2)+1,DAY(A2)) | 2026/7/12 |
DATE関数でも月を1増やせますが、月末を含む処理ではEDATE関数との差を理解して使う必要があります。
YEAR関数とMONTH関数を組み合わせる式
DATE関数の基本形は、DATE 関数に年、月、日を順番に渡す形です。
=DATE(YEAR(A2),MONTH(A2)+1,DAY(A2))
YEAR関数で年を取り出します。
MONTH関数で取り出した月へ1を加え、DAY関数で日を指定します。
開始日が2026年12月12日の場合でも、月に1を加えた結果は自動的に2027年1月12日となります。
エクセルは月が13になったとき、翌年の1月として計算を調整します。
年またぎの計算を別途分岐させなくてもよい点はDATE関数の利点です。
DATE関数で月末を扱うときの違い
ただし、2026年1月31日にDATE関数で月を1増やすと、2月31日を解釈して3月3日のような結果になることがあります。
これはDATE関数が存在しない日付を翌月へ繰り越して処理するためです。
一方でEDATE関数は2月末日を返します。
月末を含む可能性がある日付に対して、同月の日付がない場合は月末にそろえたいならEDATE関数が適しています。
DATE関数は日付を構成する用途、EDATE関数は月を移動する用途として使い分けると理解しやすいでしょう。
翌月1日を求める応用式
翌月の初日を求める場合は、=DATE(YEAR(A2),MONTH(A2)+1,1)という式を使います。
開始日が何日であっても、結果は翌月の1日です。
さらに翌月末日を求めたいなら、=DATE(YEAR(A2),MONTH(A2)+2,0)という書き方もできます。
日付の0を指定すると、直前の月の最終日になるエクセルの仕様を利用した式です。
翌月初日を求める式
=DATE(YEAR(A2),MONTH(A2)+1,1)
翌月末日を求める式
=DATE(YEAR(A2),MONTH(A2)+2,0)
【操作のポイント】日付を自由に組み立てるならDATE関数、月末へ自然に調整したいならEDATE関数を使い分けます。
表示形式とエラーを確認する方法
続いては、計算結果が日付に見えない場合やエラーが出る場合の確認方法を解説していきます。
| 表示状態 | 主な原因 | 対処 |
|---|---|---|
| 46100のような数字 | 表示形式が標準 | 日付形式へ変更 |
| #VALUE! | 開始日が文字列 | 日付データへ変換 |
関数自体が正しくても、入力値やセル書式によって意図した表示にならないことがあります。
数字で表示されるときの日付書式
エクセル内部では日付を連続した番号として保存しており、この番号をシリアル値と呼びます。
そのため結果セルが標準形式のままだと、2026年の日付が46000台の数字として表示されることがあります。
対象セルを選択してホームタブの表示形式を日付へ変更してください。
表示形式を変えても元の計算値は変わらず、見え方だけが日付に変化します。
年月だけを表示したい場合は、ユーザー定義の表示形式でyyyy年m月を設定する方法もあります。
VALUEエラーになる原因
EDATE関数でVALUEエラーが表示されるときは、開始日のセルが文字列として入力されている可能性があります。
たとえば先頭にアポストロフィが付いた日付や、全角記号を含む日付は、日付として認識されないことがあります。
セルを選択して数式バーを確認し、日付を入力し直すと解決するケースがあります。
文字列の日付を変換する必要がある場合は、DATEVALUE関数を使う方法もあります。
ただし、日付の表記やPCの地域設定によって解釈が変わることがあるため、最初から日付形式で入力するほうが安全です。
空白セルを除外するIF関数
開始日が未入力の行に不要な表示を出したくない場合は、IF関数と組み合わせます。
=IF(A2=””,””,EDATE(A2,1))
A2が空白なら空白を返します。
A2に日付があるときだけ1か月後を計算します。
入力途中の一覧表では、空白行をきれいに保てる数式です。
条件付き書式やテーブル機能と組み合わせる場合にも、空白を考慮した式は扱いやすくなります。
【操作のポイント】数字表示は表示形式、VALUEエラーは開始日のデータ形式、空白行はIF関数で確認します。
まとめ エクセルで月単位の日付を自動計算する方法
エクセルで日付に1か月足す基本の方法は、=EDATE(A2,1)を使うことです。
この式なら開始日が月末でも、移動先の月に同じ日付が存在しない場合はその月の最終日へ自動調整されます。
3か月後や12か月後を求めるときは、月数を直接入力するか、月数を入力したセルを参照します。
すべての行へ同じ月数を適用する表では、$F$1のような絶対参照を使うと効率的です。
月末日を固定で求める用途にはEOMONTH関数、年や月や日を個別に組み立てる用途にはDATE関数が向いています。
結果が数字で表示されたときはセルの表示形式を日付に変更し、エラーが出る場合は元の日付が文字列になっていないかを確認しましょう。
EDATE関数とオートフィルを活用すれば、更新日、請求日、契約満了日を月単位で正確に管理できます。