「成人の日」や「体育の日」は第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関数の[月]の引数ボックスに「10」と入力して、あとは成人の日と同様に求めます。

海の日は7月の第3月曜日なので、以下のように求めます。

敬老の日の場合、DATE関数の[月]の引数を「9」に指定し、あとは海の日と同様に求めます。

日付がシリアル値として表示されてしまう場合は、セルの書式設定にて表示形式を「日付」にします。

年を「2008」に指定すると、このようにそれぞれ日付が変化することが確認できます。

操作方法、設定方法等で困ったら、Microsoft Office Users Forum に質問してください!