エクセル関数応用
1年後の日付、○か月後の日付

Excel関数の解説、関数サンプルと高等テクニック
公開日:2013年5月以前 最終更新日:2013-06-09

1年後の日付、○か月後の日付


起算日からの一年間の最後の日の求め方です、


起算日が2011/4/1なら、2012/3/31の求め方です。

セルA1に起算日が入っており、セルA2に一年間の最終日を設定する場合。

一年後の日付

よくみかけるのは、

=DATE(YEAR(A1)+1,MONTH(A1),DAY(A1))-1

DATEは、DATE(年,月,日)で、指定の年月日の日付を返す関数です。

通常は、これでもOKだと思われます。

ただし、特殊な場合、起算日が2008/2/29の場合、結果が2009/2/28になります。
正しいように思えますが、本当は、2009/2/27です。

なぜこのような結果になるかというと、
DATE関数=DATE(2009,2,29)は、2009/3/1を返すからです。

よく役所関係では、「応答日」という言い方をします、つまりその月の同じ日付なのですが、
「応答日」が無い場合は、前日にするとの規定が多いです。

ですから、2008/2/29の一年後の応答日は、2009/2/28になりますので、
2008/2/29からの一年間では、2009/2/27が正しいです。

では、どうすればよいか

最も簡単な方法は

=EDATE(A1,12)-1

EDATEは、EDATE(起算日,月数)で、起算日の月数後の日付を返す関数です。

こちらの方が、ずっと簡単です。

しかし、注意が必要です。


注).このEDATEはアドイン「分析ツール」を入れないと使えません。
「分析ツール」は、2003なら、ツール-アドイン、2007以降は、EXCELのオプション-アドイン
また、セルの書式が日付に自動設定されませんので、自分で日付の書式に変更する必要があります。

○か月後の日付

例えば、3か月後(4か月間)を求める場合

=DATE(YEAR(B3),MONTH(B3)+3,DAY(B3))-1


これで大丈夫でしょうか?

大抵の場合はOKなのですが、起算日が月末の場合は、正しく求められません。

2011/3/31から4か月間では、2011/6/30になってしまいます。

これは、2011/6/29になる必要があります。

月末が起算日になる事はあまりないとおもわれますが、
ハローワーク等の申請においては頻発します。

では、どうすればよいか

最も簡単な方法は

=EDATE(A1,3)-1

上記、注)を参照

結論から言えば、EDATE関数を使うべきだと思います。


しかし、「分析ツール」はどうしても使いたくないと言う人の為に、
以下にその方法を紹介します。

=MIN(DATE(YEAR(A1), MONTH(A1)+3, DAY(A1)),DATE(YEAR(A1), MONTH(A1)+4,0))-1

DATE関数は、日付が0の場合、前月末日を返します。

MINは、MIN(値1,値2・・・)で、値1,値2・・・の中から最小値を返す関数です。

少し解説しますと

3か月後の同一日と3か月後の末日の小さい方の日付を求めています。

つまり、起算日が2011/3/31の場合、
MIN(DATE(2011,6,31),DATE(2011,7,0))→MIN(2011/7/1,2011/6/30)→2011/6/30

上記は一例で、これ以外にも、IF関数を使った方法等も色々考えられます。




同じテーマ「エクセル関数応用」の記事

1年後の日付、○か月後の日付
複数条件の合計・件数
入力規則のリストを、追加・削除に自動対応で作成
入力規則のリストを、2段階の絞り込みで作成1
入力規則のリストを、2段階の絞り込みで作成2
ピポットテーブルの参照範囲を、追加・削除に自動対応で作成
関数を使って行列を入れ替える方法
複数条件で検索し、複数データを取得する方法
関数で銀行型丸め(最近接偶数への丸め)を行う方法
関数で他シートへ並べ替える方法(サンプル:ABC分析)
VLOOKUPを他の関数でやる方法


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ