「来年の成人の日が何日なのかを調べるにはどうしたらいいのでしょう?」
といったご質問をいただくことがあります。
1999年まで成人の日は1月15日に固定されていましたけれど、ハッピーマンデー制度導入によって、2000年からは1月の第2月曜日と年によって変化するようになっています。
毎年日付が変わるため、先のようなご質問をいただくことになるわけです。
第2月曜日を取得する数式
1月の第2月曜日の日付を求めることが、成人の日がいつなのかを調べることと同義です。
※A2セルに年が入力されているときにB2セルにその年の成人の日を表示する例
B2セルに
=DATE(A2,1,14-WEEKDAY(DATE(A2,1,0),3))
という計算式を入力する
第1月曜日は、1日から7日のいずれかの日で、
第2月曜日は、8日から14日のいずれかの日です。
必ず。
上述の、
=DATE(A2,1,14-WEEKDAY(DATE(A2,1,0),3))
という数式の
=DATE(A2,1,14-WEEKDAY(DATE(A2,1,0),3))
という部分は、
「A2」セル年の「1」月「14」日
という意味です。
第3引数の
「14」から「6」を引けば「8」
「14」から「0」を引けば「14」
となります。
上手く「6」から「0」の整数を取得して、「14」からマイナスすれば、第2月曜日の「8」から「14」という値が取得できます。
このマイナスする「6」から「0」の値をどう取得するかですが、簡単に取得できさえすれば極論何でもかまいませんが、上記の式では「WEEKDAY(DATE(A2,1,0),3)」を使っています。
「DATE(A2,1,0)」は、
「A2セル」年の「1」月「0」日
すなわち
「A2セル-1」年(前の年)の「12」月「31」日
を意味しています。
曜日を数値化した値を調べるのがWEEKDAY関数で、第2引数に「3」を指定すると、
月曜日:0
火曜日:1
水曜日:2
木曜日:3
金曜日:4
土曜日:5
日曜日:6
という値が取得できます。
これは成人の日を求めるために、「=DATE(A2,1,14」からマイナスするのに丁度いい数値となっています。
この丁度いい数値、前年の12月31日の曜日を数値化した値を取得するのが、
=DATE(A2,1,14-WEEKDAY(DATE(A2,1,0),3))
DATE関数の第3引数の一部に指定した「WEEKDAY(DATE(A2,1,0),3)」の意味です。
ここでは「14」から「6」〜「0」の値を引くという考え方をベースにした方法をご紹介しましたが、もっと別の考え方をしてもOKです。
例えば、
「8」に何らかの方法で取得した「0」〜「6」の数値を足す
「7」に何らかの方法で取得した「1」〜「7」の数値を足す
といった考え方をベースにした数式にしても構いません。
最終更新日時:2020-12-14 11:29
Home » Excel(エクセル)の関数・数式の使い方 » 日付の処理・計算 » 成人の日(1月の第2月曜日)を求める−WEEKDAY関数・DATE関数