[Excel] 翌月(1か月後)の同日を表示する EDATE(日付セル,1) *別解あり
【まとめ】
翌月(1か月後)の同日を表示する計算式
=EDATE(日付セル,1)
〇か月後の同日を表示するなら
=EDATE(日付セル,〇) *〇に数値が入る
「〇か月」を別セルに入れると修正が楽。
[説明]
翌月(1か月後)の同日を表示したいことは、結構あります。
特定日のデータを入力するとか。
日付データに30日または31日(または28/29日)を足せば翌月の同日は出ますが、月の日数を考慮しながら出すのは面倒。だったら手入力の方が早いでしょう。でも、それも面倒。
私は以前、「日付をコピーして月だけ手修正」していました。
コピーしてF2で修正可能にして←でカーソルを動かして月を消して、翌月を入れて・・・
地味に面倒ですが、月1回の作業だったので、苦ではありませんでした。
でも、これ、本当はよくありません。
複数月分を作成すると結構面倒だし、間違いもおきます。
「面倒だな」と思って「何とかならないか」と考えて「調べる」。
当然、このレベルの関数は存在します。
計算式を作ってコピーすれば、使いまわせますし(=再現性がある)、間違いもおきづらい。
〇か月後の同日を表示する計算式
計算式は簡単です。[まとめ]のとおりです。
=EDATE(日付,月数)
1か月後の同日なら =EDATE(日付,1)
1か月前の同日なら、=EDATE(日付,-1)
となります。
マイクロソフトサポートの
「日付を加算または減算する」という項目の中に「EDATE 関数を使用して日付から月を加算または減算する」という項目で説明されています。
*EDATEの「E」が何を意味するかは分からず。
また、月数を入れるのに、DATEというのは、個人的にはちょっと違和感がありますが、「そういうものだ」と覚えるしかありません。
「〇か月後」の月数はセルに入れてもいい(推奨)
まとめ]にあるように、月数はセルでも指定できます。こちらの方が、むしろ汎用的でしょう(計算式の中に変数を入れるのは、「御法度」です。修正が面倒ですから。)
もっとも、毎月毎月、「翌月の同日」を表示する、というなら、
=EDATE(日付,1)
をコピーしていけばいいだけなので、計算式の中に「1」があってもいいでしょう(修正しないので)。
1年後の同月同日なら「12」を入れる
「〇か月後の同日」ではなく、「1年後の同月同日」は、どうすれば出せるでしょうか?
これも簡単です。
月数に「12」を入れるだけです。
'=EDATE(B18,C18)
C18は月数ですが、これが「12」だと、翌年の同月同日が表示されます。
勿論、計算式内に直接「12」と入れても構いません。
=EDATE(B18,12)
EDATE関数を使わなくても、DATE関数で出せる
EDATEは簡単な関数ですが、「〇か月後の同日」は、EDATE関数を使わなくても出せrます。
DATE関数を使います。
DATE関数は
DATE(年,月,日)とすることで年月日データになります。
もちろん、計算式に直接数値を入れるのではなく、セルを指定することも可能です(推奨)。
B15の日付の1か月後の同日を出したい場合、
=DATE(YEAR(B15),MONTH(B15)+1,DAY(B15))
となります。
YEARは年月日データから年を取り出し、
MONTHは年月日データから月を取り出し、
DAYは年月日データから日を取り出します。
年・月・日を取り出して、月にだけ1を足して、また合体させると、翌月の同日が表示されます。
ちょっと面倒ですが、EDATEよりは何を計算しているか分かりやすいかと思います。
面白いのは、翌月が年をまたぐ場合(12月の1か月後など)。
上のように、年はそのままでも、勝手に次の年に代わっています。
(てっきり、IF関数を使って、「MONTH+
〇」が12より大きい場合は、YEARに1を足す、という計算式にしないといけないかな、と思っていましたが、杞憂でした。)
「1年後の同月同日」もEDATEと同じく、月に12を足すことで出せます。
B22の日付の「C22」か月後として、「C22」に「12」が入っている場合は・・・
=DATE(YEAR(B22),MONTH(B22)+C22,DAY(B22))
もちろん、年に1を足しても「1年後の同月同日」が出せます。
B25の日付の「C25」年後として、C25に「1」が入っている場合は・・・
=DATE(YEAR(B25)+C25,MONTH(B25),DAY(B25))
「考える」ことが重要
正直、EDATE関数を知ってしまえば、わざわざDATE関数を使うことはないでしょう。記述が長くなりますから。
でも、EDATE関数を知る以前に、自分の知っている知識で「どうやればできるか」考えてみることは、とても重要です。
それは、前々の記事にも記したと通りです。
新たな関数の知識を得ることは貴重ですが、それだけではなく、「今ある知識で何ができるか考えてみる」。これ、とっても重要です。
これにより、エクセルを組み立てていくことが可能になります。
(戦争に例えるのは好きではありませんが、最新武器や戦力がが手に入らずとも、手持ちのものでいかに戦うか、を考えることで戦術や戦法が鍛えられます。)
実際、DATE関数を使った場合、MONTHに1を足すという発想から、YEARやDATEに1を足す、という発想も当然出てきます。
それが正解か否かはともかく、考えることは重要です。
勿論、WEB等で調べて、新たな知識を得ていくのも重要です。
その両輪が知識と実践の幅を増やしていきます。
もう一つ大事なのは、新しい関数を学んだり、新しい計算方法を見つけたら、それを身に着けていくこと。
具体的には、メモしておくとか、テンプレート化するとか、「マイ関数ファイル」に保存するとか。
一度使った程度では、すぐに忘れてしまいますので、「蓄積」することで「知識の資産化」を図ります。
余談ですが、私が中小企業診断士の資格を取った一つの理由は、経済や経営を勉強した際、単に学ぶより、学んだ知識を資産化するためでした(体系的に学ぶため、でもありましたが)。
まぁ、その「資産」が有効活用できているかは評価が難しいところですが・・・。
以上、EDATE関数から脱線してしまいましたが、参考になれば幸いです。
本稿は、「〇か月後の同日」を出すものでしたが、「〇か月(主には翌月)の末日」を出すにはどうしたらよいでしょうか?
あるいは「ある時刻の〇時間後、あるいは〇分後」の出し方は?
これらはまた別途お示しします。
追記
・翌月(1か月後)の末日を表示する EOMOHT(日付セル,1) *別解(頭の体操)あり
・ 〇時間(分)後の時刻を表示する TIME関数 *使わなくてもいい
(参考 1日 2h)