• ベストアンサー

エクセルで作る万年カレンダーで使う関数について(パート2)

再び質問させて頂きます。エクセルで万年カレンダーを作ろうと、解説のホームページを見ているのですが、分からない部分があります。 〔表示例〕   2005/9/19 敬老の日   (      ) 国民の休日   2005/9/23 秋分の日   (      ) 振替休日 〔解説1〕 ※振替休日・・・ 日曜日と祝日が重なったとき ※国民の休日 ・・・祝日と祝日に挟まれた平日 ※振替休日と国民の休日が重なったときは、振替休日とする。 〔解説2〕 (敬老の日と秋分の日) 敬老の日が月曜日に固定されているので、秋分の日の曜日により国民の休日となる可能性があります。 (計算式) ・両祝日間が2日間であることから判定     =IF(B21-B19=2,B19+1,"") ・秋分の日が必ず水曜日になることから判定     =IF(WEEKDAY(B21)=4,B19+1,"") 解説の内容が、全体的にいまいち分かりません。(^^; 祝日同士が3日間の開きがあるのに、”国民の休日”が発生したりするのでしょうか? もしできたら、具体的にカレンダーの曜日まわりを含めて例を挙げて教えて頂けると助かります。 分かる方、ぜひよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • poohron
  • ベストアンサー率59% (574/971)
回答No.1

祝日同士が3日間の開きがあるなら、「国民の休日」は発生しませんよ。 〔解説1〕の上にある〔表示例〕は 2005年の場合、敬老の日の9/19(月)、秋分の日は9/23(金)であり、 「国民の休日」と「振替休日」の左が(    )になっているのは 2005年にはどちらも発生しないという意味では? 次に「国民の休日」が発生する(と思われる)のは2009年です。 2009年の敬老の日は9/19(月)、秋分の日は(計算によると)9/21(水)です。 9/22(火)は『祝日と祝日に挟まれた平日 』なので、 「国民の休日」になると思われます。

1969taka1969
質問者

お礼

早速のご回答、ありがとうございます。 「2009年に実際にそうなる」ということで、カレンダーを見て確認してみました。そして納得できました。モヤモヤしたものが飛んでいきました。 お力添えに、感謝いたします。

その他の回答 (3)

  • poohron
  • ベストアンサー率59% (574/971)
回答No.4

No.1です。 あれ?私、変なこと書いてました(・・;) 『2009年の敬老の日は9/19(月)、秋分の日は(計算によると)9/21(水)です。』 って、日付が全然違ってました。 正しくは 『2009年の敬老の日は9/21(月)、秋分の日は(計算によると)9/23(水)です。』 でした…。 余談ですが私も以前、万年カレンダーを作成しました。 とりあえず完成させた後、ちょっと変わった方法で作ってみたくて 祝日のリストを作らずに、すべて『セルの条件付き書式だけ』で 日付部分の色を塗り分ける方法で新たにもう一つ作っちゃいました。 拡張性は皆無ですが、なかなか面白かったですよ。 祝日の制定年や春分/秋分の日の計算などについて 私がその時に参考にしたのは下記サイトです。

参考URL:
http://www.h3.dion.ne.jp/~sakatsu/holiday_topic.htm
1969taka1969
質問者

お礼

再びご回答、ありがとうございます。 同じ万年カレンダーを作るのでも、色々な作り方がありそうで、面白そうですね。 祝日の制定に関するサイトも紹介して頂き、感謝いたします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 今度、国民の休日が来るのは、私が作った万年カレンダですと、2009/9/22 になっています。実際は、200年ぐらいまでしかできないと思います。確か、春分・秋分の日が、その頃ずれるのだったような記憶があります。 それよりも、過去がややこしいです。以下をご覧になって分かるように、私は、祝日の制定された年を盛り込みました。確か、JavaScript で作っていた人がいたはずで、そのサイトでしていることを、Excelでも反映させようとしました。 まあ、何年も掛かって、コツコツと作ることですね。あまり安直に他人に聞いても、本当は勉強にはなりませんね。(勉強じゃないのなら申し訳ないのですが) 私は、最初に作り始めてから、かれこれ4年以上経っています。^^; まだ、終わってはいません。 今のバージョンでは、以下のような計算になっています。要するに、3列を使って、最後に、そのすべてをSMALL関数でまとめて、一列にしています。 myYear = 2009 B11 にこれが置いてあります。2行目からですから、11行目がこれになります。 =IF(myYear<2002,DATE(myYear,9,15),DATE(myYear,9,22)-WEEKDAY(DATE(myYear,9,6))) =IF(OR(B11="",myYear<1985),"",IF(AND(MONTH(B11)<>5,B11+2=B12),B11+1,"")) この式ですと、1985年よりも前は、ありません。5月は例外として、B列に2日足したら、B12になれば、国民の休日が発生する、という数式です。考え方は分かっていただけるかと思います。 なお、私の作った成人の日の数式です。 =IF(myYear<2000,DATE(myYear,1,15),DATE(myYear,1,15)-WEEKDAY(DATE(myYear,1,6))) 2000年以降から、第二月曜日に決まったからです。 休みは以下のようになります。 敬老の日  2009/9/21 国民の休日 2009/9/22 秋分の日  2009/9/23 参考サイト: こよみのページ http://koyomi.vis.ne.jp/directjp.cgi?http://koyomi.vis.ne.jp/syukujitsu.htm あまり、自信があって作っているわけではありません。思い出した時に、チェックを入れています。

1969taka1969
質問者

お礼

詳しく色々教えていただきまして、ありがとうございます。 今度は2009年に、国民の休日が訪れるのですね。 実は私、エクセルを勉強してみようと思ったのが、つい数週間前のことで、様々な関数を自在に扱うのは、まだまだこれからの状態です。そんな私にも、お力添えを頂き、感謝いたします。

noname#204879
noname#204879
回答No.2

》 解説のホームページを見ているのですが、… そのURLは?

1969taka1969
質問者

お礼

お尋ねありがとうございます。 下記のURLです。 http://www.eva.hi-ho.ne.jp/ohtake/excel/calender2.htm

関連するQ&A

専門家に質問してみよう