« A7メモ帳にぴったり?伸びるペン | メイン | 『売れる営業』の手帳の中身 »
2007年02月10日
柑橘系ビター
エクセルで創るスケジュールシート(11)
「創る」
4.国民の休日・振替休日の
表示方法(2)
・・・ 関数にしてみよう ・・・
●前回の説明でお分かりのとおり、今年から5月の連休で「憲法記念日」か「みどりの日」か「こどもの日」のいずれかが日曜日にあたると5月6日が振替休日となり、4連休になることになります。去年までは、「こどもの日」が日曜日にあたった時だけが4連休でしたので、4連休になる可能性が高くなったということになります。
●以下の関数を使ってみましょう。
| 関数名 |
書式 |
説明 |
留意点等 |
| DATE | =DATE(年,月,日) | 引数で指定した「年」「月」「日」に対応する日付データ(シリアル値)を作る | |
| WEEKDAY | =WEEKDAY(シリアル値,種類) |
指定した日付データ(シリアル値)の曜日を調べる 種類 月火水木金土日 1 2 3 4 5 6 7 1 2 1 2 3 4 5 6 7 3 0 1 2 3 4 5 6 |
土日かどうかを判定させたい場合には、「種類」を2か3に指定するとよい。(土日の場合は、6以上とか5以上と指定できる) 種類を指定しないと「1」を指定した場合と同じになります。 |
| IF | =IF(論理式,真の場合,偽の場合) | 「論理式」に指定した条件が、真の場合には「真の場合」に指定した内容が、偽の場合には「偽の場合」に指定した内容が選択される | |
●休日テーブル(一覧表)は、日付とその名称を並べます。スケジュールシートの日付に該当する休日の名称を、この休日テーブルから関数(VLOOKUP)を使って探して表示させるためです。
●日付欄だけでなく名称欄にも関数を使って表示させる名称を切り替えます。これは、
- 国民の祝日と国民の祝日に挟まれた日が休日となる場合、その日が日曜日の扱いとなる場合、国民の祝日になる場合、振替休日の扱いとなる場合にわかれる。
- 法律改正により、名称が変わっている場合がある。
といったことに対応させるためです。
●さて、ゴールデンウィーク近辺と敬老の日・秋分の日近辺の休日を法律改正にも対応させながら関数化して見ましょう。それぞれの箇所に、関数化のロジックを簡単に記載しておきますので参考にしてください。
ゴールデンウィークのセット
【憲法記念日】
日付欄
=DATE(年,5,3)
名称欄
憲法記念日
【みどりの日】
日付欄 (2006年までは憲法記念日の翌日が月曜日から土曜日の時には憲法記念日の翌日を表示させ日曜日の時にはゼロを表示させる、2007年からは曜日にかかわらず憲法記念日の翌日を表示させる)
=IF(年<2007,IF(WEEKDAY(憲法記念日のシリアル値+1)>1,憲法記念日のシリアル値+1,0),憲法記念日のシリアル値+1)
名称欄 (2007年からは「みどりの日」を表示、2006年までは5月4日が日曜日の時にはゼロを表示させ月曜日の時には振替休日を表示させ火曜日から土曜日の時には「国民の休日」を表示させる)
=IF(年>2006,"みどりの日",IF(WEEKDAY(DATE(年,5,4))=1,"",IF(WEEKDAY(DATE(年,5,4))=2,"振替休日","国民の休日")))
【こどもの日】
日付欄
=DATE(年,5,5)
名称欄
こどもの日
【振替休日】
日付欄 (2006年まではこどもの日が日曜日の時にはこどもの日の翌日を表示させ日曜日でない時にはゼロを表示させる、2007年からは憲法記念日・みどりの日・こどもの日のいずれかが日曜日の場合には5月6日を表示させ日曜日でない場合にはゼロを表示させる)
=IF(年<2007,IF(WEEKDAY(こどもの日のシリアル値)=1,こどもの日のシリアル値+1,0),IF(OR(WEEKDAY(憲法記念日のシリアル値)=1,WEEKDAY(みどりの日のシリアル値)=1,WEEKDAY(こどもの日のシリアル値)=1),DATE(年,5,6),0))
名称欄
振替休日
敬老の日・秋分の日のセット
【 敬老の日】
日付欄 (2002年までは9月15日を表示させ、2003年からは9月の第3月曜日を表示させる)
=IF(年<2003,DATE(年,9,15),DATE(年,9,22-WEEKDAY(DATE(年,9,6))))
名称欄
敬老の日
【国民の休日】
日付欄(2002年までは敬老の日が日曜日の時には敬老の日の翌日を表示させ日曜日でない時にはゼロを表示させる、2003年からは敬老の日と秋分の日の間に1日が挟まれてその日が月曜日の時には敬老の日の翌日を表示させそうでない時にはゼロを表示させる)
=IF(年<2003,IF(WEEKDAY(敬老の日のシリアル値)=1,敬老の日のシリアル値+1,0),IF(秋分の日のシリアル値-敬老の日のシリアル値=2,敬老の日のシリアル値+1,0))
名称欄(2002年までは振替休日を表示させ、2003年からは国民の休日を表示させる)
=IF(年<2003,"振替休日","国民の休日")
【秋分の日】
日付欄
=DATE(年,9,INT(23.2488+0.242194*(年-1980)-INT((年-1980)/4)))
名称欄
秋分の日
【振替休日】
名称欄(秋分の日が日曜日の時には秋分の日の翌日を表示させ、日曜日でない時にはゼロを表示させる)
=IF(WEEKDAY(秋分の日のシリアル値)=1,秋分の日のシリアル値+1,0)
日付欄
振替休日
これで全ての祝祭日についての関数化が可能となりました。
次回は、これらをテーブルにとりまとめて休日テーブルを完成させましょう。
では、次回をお楽しみに。
投稿者 柑橘系ビター : 2007年02月10日 00:00
トラックバック
このエントリーのトラックバックURL:
http://www.nogulabo.net/MT/mt-tb.cgi/984

