プロフィール

フォトアルバム

ホリー

ザスパのホーム戦では,ゴール裏で叫んでいます。 本職は,小学校の教員。 中学校の免許教科は理科です。 リンゴマークのついたものが大好きです。

フォトアルバム

 

Horryのリンク

最近読んだ本

« Excelで遊んでます4 | メイン | Excelで遊んでます6 »

2006-02-18

Excelで遊んでます5

 今日は,閏年の処理を考えてみました。閏年には,様々な規則があります。私の記憶が確かならば・・・。

  1. 西暦が4で割り切れる年は閏年
  2. 西暦が100で割り切れる年は閏年ではない
  3. 西暦が400で割り切れる年は閏年

だと思います。

 直近では西暦2000年が,3の条件に当てはまるので閏年でした。さて,これら3つの条件を数式で表すのは,とっても面倒です。今年は2006年ですよね。条件2に当てはまるのは,なんと94年後です。今作っているファイルが,あと90年以上使われるはずはありません。(その時までのExcelのバージョンアップは想像すらできません)

 そこで,2月29日の曜日を表示するセルに,特別に式を入れることにしました。

=IF(MOD(B1+1,4)=0,WEEKDAY(DATE(B1+1,2,29),1),"")

という感じです。セルB1には,西暦が入ります。2月は新しい年なので1を足してます。

 上の式を翻訳すると,「もし(IF),B1の数値に1を足したものを4で割った余り(MOD)が0であることが正しければ,セルにB1+1年2月29日の曜日を表すシリアル値を入力しなさい。正しくなければ,何も入力しません。」ということになります。

 行事予定を入れるセルの「条件付き書式」も少々加工します。「条件3」に,「曜日のセルが空白ならグレーの網掛けをしなさい。」という指定をしておきます。すると,閏年には曜日が出現するのでグレーの網掛けはなくなります。

 あとは,入力した行事予定を,月別行事予定表に反映させれば,ほとんど終わります。マクロを使わないので,印刷指定などが手作業になってしまうのが残念です。次はマクロの勉強でも始めますかね。

 実は,今回作ったファイルには,大きな欠点(バグではなく穴)があります。現行の祝日法では,国民の祝日が日曜日に重なった時,次の月曜日が休日になるのです。来年からは,次の祝日でない日だとかなんだとか,条件が難しくなります。これに対応するのが難しいのです。

 ハッピーマンデーの祝日は月曜日なので,何の指定もいりません。また,固定されている祝日(みどりの日[現行:来年から昭和の日],こどもの日,文化の日,勤労感謝の日,天皇誕生日,元日,建国記念の日)は,翌日のセルに月曜なら「休日」と表示する数式を入れておけばいいですよね。でも,移動する祝日(春分の日,秋分の日)は,指定できないのです。

 また,来年からは,振替休日の指定方法が変わるのだそうです。

 内閣府のサイトの「国民の祝日について」には,以下のように書かれています。

************以下引用

■ 「昭和の日」について

 国民の祝日に関する法律の一部を改正する法律(平成17年法律第43号)が公布され、「国民の祝日」として、新たに「昭和の日」を加え、「みどりの日」を5月4日とすることになりました。

昭和の日 4月29日 激動の日々を経て、復興を遂げた昭和の時代を顧み、国の将来に思いをいたす。
みどりの日  5月4日 自然に親しむとともにその恩恵に感謝し、豊かな心をはぐくむ。

 また、「国民の祝日」が日曜日に当たるときは、その日後においてその日に最も近い「国民の祝日」でない日を休日とすることになりました。
 なお、この改正は、平成19年1月1日から施行されます。

************引用ここまで(下線はHorryがつけました)

例えば,

  • 5月3日が日曜日なら,4日(月),5日(火)が「国民の祝日」なので,6日(水)が休日になる。
    →土曜を入れて5連休!
  • 5月4日が日曜日なら,6日(火)が休日になる。
    →4連休
  • 5月5日が日曜日なら,6日(月)が休日になる。
    →4連休

 また,前日と翌日が「国民の祝日」である日は休日とする。という条文が現行法にあります。これによって,5月4日が休日になっていたのですが,5月4日は正式な「国民の祝日」に昇格しますので,もう使えないのでしょうか。いえいえ,この条文は,毎年ではありませんが,時々役立つ条文なのです。それは,9月にやってきます。(トリビアでやったそうですが)

  • 9月の第3月曜日は「敬老の日」
  • 9月の秋分日が「秋分の日」

 実は,2009年の「敬老の日」は21日(月),「秋分の日」は23日(水)になる予定なのです。ということは,「国民の休日」にはさまれた22日(火)は,休日になるはずです。19日(土)から23日(水)までの5連休が出現します。

 こんなに複雑な条件に対応するのは,もはや関数だけでは不可能です。(きっと)やっぱりVBAでも使わないと,本当の自動化はできないのでしょうか。VBAの勉強が進むまで,このシリーズはお休みになるかな?それとも,まだExcelで遊べるかな?

コメント

コメントを投稿


-天気予報コム-