成人の日や体育の日などを求めるには
はじめに
「成人の日」や「体育の日」は第2月曜日、「海の日」「敬老の日」は第3月曜日になります。これらをExcelで求めるには、WEEKDAY関数とDATE関数を組み合わせて求めます。
先月末日が日曜日の場合、第2月曜日は8日となります。また、先日末日が月曜日の場合は、第2月曜日は14日になります。つまり、第2月曜日は8日~14日までの間で変動することになります。この第2月曜日の日付をExcelで求めるには、WEEKDAY関数とDATE関数を組み合わせて利用します。
関数名 | 書式 | 説明 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
WEEKDAY | WEEKDAY(シリアル値,種類) |
| ||||||||||||||||||||||||||||||||||||
DATE | DATE(年,月,日) |
|
先月末日が月曜日の場合には最大値「14」を、火曜日以降は「14」から1ずつ減らしていった値が、第2月曜日の値となります。月曜日を基点として、火曜日、水曜日と引き算する値を1ずつ増やしていく処理には、WEEKDAY関数で対応できます。
DATE関数の「日」の引数には、「14」からWEEKDAY関数で求めた先月末日の数値を差し引くことで、第2月曜日の日付を求めることができます。
先月末日 | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
---|---|---|---|---|---|---|---|
第2月曜日 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
差分 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
ここでは、「14」からの引き算で日付を求めるので、先月末日が月曜日の場合には、WEEKDAY関数で「0」を返す必要があります。よって、引数「種類」には「3」を指定します。ちなみに、先月末日の値を求めるには、DATE関数の「日」の引数を「0」にするとよいでしょう。第2月曜日の「日」の数値だけを求める場合は以下の数式で成り立ちます。
14-WEEKDAY(DATE(年,月,0),3)
先月末日
DATE関数の「日」の引数に以上の数式をあてはめると、第2月曜日の日付(シリアル値)が得られます。
=DATE(年,月,14-WEEKDAY(DATE(年,月,0),3))
一方、第3月曜日の場合は、21から先月末日の曜日の数値を差し引くことにより求めることができます。
=DATE(年,月,21-WEEKDAY(DATE(年,月,0),3))
操作方法
成人の日を求める
- 成人の日を求めるセルを選択します。
- [数式]タブを開き、[関数ライブラリ]の[日付/時刻]一覧からDATE関数を選択します。
- [年]の引数には年の数値が入ったセル(A1)を指定します。
- [月]には「1」と入力します。
- [日]には「14-WEEKDAY(DATE(A1,1,0),3)」と入力します。
- [OK]ボタンをクリックします。
=DATE(A1,1,14-WEEKDAY(DATE(A1,1,0),3))
体育の日を求める
体育の日の場合、DATE関数の[月]の引数ボックスに「10」と入力して、あとは成人の日と同様に求めます。
=DATE(A1,10,14-WEEKDAY(DATE(A1,10,0),3))
海の日を求める
海の日は7月の第3月曜日なので、以下のように求めます。
=DATE(A1,7,21-WEEKDAY(DATE(A1,7,0),3))
敬老の日を求める
敬老の日の場合、DATE関数の[月]の引数を「9」に指定し、あとは海の日と同様に求めます。
=DATE(A1,9,21-WEEKDAY(DATE(A1,9,0),3))
コメント
※技術的な質問はMicrosoftコミュニティで聞いてください!