Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » 成人の日(1月の第2月曜日)を求める−WEEKDAY関数・DATE関数

成人の日(1月の第2月曜日)を求める−WEEKDAY関数・DATE関数

対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007

「来年の成人の日が何日なのかを調べるにはどうしたらいいのでしょう?」
といったご質問をいただくことがあります。

1999年まで成人の日は1月15日に固定されていましたが、ハッピーマンデー制度導入によって2000年からは1月の第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」
という部分は、
「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日の曜日を数値化した値を取得するのが
「WEEKDAY(DATE(A2,1,0),3)」
という部分の意味です。

▼サンプルファイル(003241.xls 38KByte)ダウンロード

サンプルファイルの「成人の日を求める」シートには上記のようにA1セルに西暦年を入力したら成人の日が表示される「=DATE(A1,1,14-WEEKDAY(DATE(A1,1,0),3))」という数式が入力してあります。

「検証用」シートの
C列には「=DATE(A2,1,0)」
D列には「=WEEKDAY(DATE(A2,1,0),3)」
E列には「=14-WEEKDAY(DATE(A2,1,0),3)」
B列には「=DATE(A2,1,14-WEEKDAY(DATE(A2,1,0),3))」
といった数式をそれぞれ入力してあり、A列の西暦年を参照して、B列に2000年から2020年の成人の日が表示されるようにしてあります。

B:E列の数式の意味と計算されている値とをじっくり見て
「=DATE(A2,1,14-WEEKDAY(DATE(A2,1,0),3))」
という数式で成人の日が表示できる理屈をご確認ください。

ここでは「14」から「6」〜「0」の値を引くという考え方をベースにした方法をご紹介しましたが、もっと別の考え方をしてもOKです。

例えば、
 「8」に何らかの方法で取得した「0」〜「6」の数値を足す
 「7」に何らかの方法で取得した「1」〜「7」の数値を足す
といった考え方をベースにした数式にしても構いません。

関連語句
第4金曜日, 第n金曜日
[スポンサードリンク]

Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » 成人の日(1月の第2月曜日)を求める−WEEKDAY関数・DATE関数

TrackBack:3

TrackBack URL
曜日表示にWEEKDAY関数は不要 from インストラクターのネタ帳
対象:Excel97,Excel2000,Excel2002,Excel2003,Excel2007 はてなブックマークで「第97回 これだけは押さえ...
WEEKDAY関数の機能アップ−Excel2010 from インストラクターのネタ帳
対象:Excel2010 先日「Excel Semi-Pro」というブログの「The WEEKDAY Functioin in Excel」という記事で...
曜日で条件分岐する-Weekday関数 from インストラクターのネタ帳
対象:Excel2003, Excel2007, Excel2010 VBA(Visual Basic for Applications)の、Forma...

Home » Excel(エクセル)の関数・数式の使い方 » 日付計算 » 成人の日(1月の第2月曜日)を求める−WEEKDAY関数・DATE関数

「日付計算」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.