日付を指定すると、その当月の月初日/月末日を表示します。
「DATE関数」を使用します。
(画像をクリックすると、このサンプルがダウンロードできます)
DATE関数の引数は「年」「月」「日」の3つです。
「月初日」の算出は、
DATE関数で「指定日」の年、月と日は「
1」固定でOKです。
「月末日」は変動するのですが、「月初日」の「翌月1日」を算出し、そこから「
1」を差し引きます。
「
MONTH($D$2)+1」は、このサンプルでは
12月に「
1」を加えているので「
13」になるのですが、
DATE関数は「
13月の場合は翌年
1月」として判断してくれます。こうして
DATE関数では「
2017/01/01」が算出され、「
1」を差し引いているので、「
2016/12/31」となります。
※「翌月の1日を算出して1を引く」という説明を明確にするため、このように書きましたが、「1日から1を引く」、つまり「1から1を引く」わけです。
=DATE(YEAR($B$2),MONTH($B$2)+1,0)
で同じ結果になります。「翌月のゼロ日は当月末日」ということです。
さて、
Excel2007以降
(*.xlsx、*.xlsm)では
「EOMONTH関数」が追加されました。
EOMONTH関数は、「起算日から
nヶ月後の月末日」を算出するものです。
上と全く同じサンプルで関数を
EOMONTH関数に置き換えてみましょう。
EOMONTH関数は第
1引数が「起算日」、第
2引数が「経過月数(マイナス可)」ですから、当月末日を求める場合は「経過月数
=0」となります。
一方、このサンプルでは月初日を求める方にも
EOMONTH関数を使ってみました。
DATE関数では
YEAR関数、
MONTH関数と組み合わせなければなりませんでしたが、
EOMONTH関数では、
だけになりました。これは「前月末日の翌日」のいう計算になります。