わえなび ワード&エクセル問題集

当サイトはWordとExcelの実力を鍛える最高水準の特訓問題集です。リンクを張るのは自由です。みんなで勉強しましょう!

【Excel関数】祝日、休日、長期休業日の日付の色を変えるのは簡単ではない

インターネットで検索すると休日や祝日の色を「簡単」に変える方法などというサイトをよく見かけますが、Excelはアメリカ人が作ったソフトであって、そんな簡単に日本の祝日を判別できるわけがありません。土日の色を変えるのとはやり方もレベルも全く違います。

残念なことに、祝日の判定方法を全く理解しようともせず、他の人がやっている方法をよく分からずにマネして片付けようとする人が多いようです。「解説の通りにやってみたけれど色が変わらない、できない・・・」などと嘆いていてもスキルアップにはなりません。

そこで、今回は、祝日の仕組みを理解して、祝日のリストを自作するところからカレンダーの色を変えるまでの流れを解説します。

目次

1.土曜、日曜、特定の曜日の色を変える

カレンダー、月間予定表の作成方法、曜日の色を変える方法については、それぞれこちらの記事をご覧ください。

 

2.祝日を勉強しよう

問題

日本における国民の祝日、振替休日、国民の休日の違いを述べなさい。また、内閣府のサイトで2年後の祝日のデータが公開されていない理由を述べなさい。 

解説

(1)祝日法

カレンダーの祝日は、国民の祝日に関する法律(昭和23年法律第178号)第2条に定められています。

  • 元日 1月1日
  • 成人の日 1月の第2月曜日
  • 建国記念の日 政令で定める日(2月11日)
  • 天皇誕生日 2月23日
  • 春分の日 春分日
  • 昭和の日 4月29日
  • 憲法記念日 5月3日
  • みどりの日 5月4日
  • こどもの日 5月5日
  • 海の日 7月の第3月曜日
  • 山の日 8月11日
  • 敬老の日 9月の第3月曜日
  • 秋分の日 秋分日
  • 体育の日 10月の第2月曜日
  • 文化の日 11月3日
  • 勤労感謝の日 11月23日

 

(2)改正法で簡単に変えられる

祝日法は国会の議決によって定められた法律なので、改正するときも国会で「改正法」を作ります。簡単に言えば国会議員が変えようと思えばいくらでも変えられます。最近では、皇位継承と五輪開催に伴う変更です。

皇位継承では、天皇陛下ご即位の日、即位礼正殿の儀が行われる日が祝日扱いとなり、天皇誕生日の変更がありました。変更によって2019年12月23日は平日になりました。

  • 天皇即位の日 2019年5月1日
  • 即位礼正殿の儀 2019年10月22日
  • 天皇誕生日 2019年12月23日→2020年2月23日

オリンピック・パラリンピック関連では、2020年限定で祝日が大きく変更となります。2021年以降は元に戻ります。また2020年以降、体育の日がスポーツの日になります。

  • 海の日 2020年7月23日
  • スポーツの日 2020年7月24日
  • 山の日 2020年8月10日

 

(3)振替休日と国民の休日は「祝日ではない」

カレンダー上の休日には3種類あります。

  • 国民の祝日
  • 振替休日
  • 国民の休日

祝日法で定められた日または別の法律で祝日扱いと定められた日を「国民の祝日」といいます。国民の祝日は法律で明確に定められたものだけです。国民の祝日が日曜日だったらその直近の「祝日でない日」を休日にします(振替休日)。振替休日は休日であって、祝日ではないことに注意します。

f:id:waenavi:20191117104722j:plain

 

日・月が祝日だったら、火曜日が振替休日です。

f:id:waenavi:20191117104744j:plain

 

また、国民の祝日に挟まれた「祝日でない日」を休日にします(国民の休日)。これも祝日ではなく休日です。

f:id:waenavi:20191117104833j:plain

 

したがって、挟まれた国民の休日がたまたま日曜日だったとしても、振替にはなりません(振り替えるのは祝日だけ)。

f:id:waenavi:20191117104900j:plain

 

また、日曜や振替休日は祝日ではないので挟まれても、挟まれた日は休日ではありません。

f:id:waenavi:20191117105204j:plain

 

(4)翌々年の祝日が確定しない理由

祝日のうち、春分の日と秋分の日は天文学的に昼と夜の長さが同じになる日なので、国立天文台が天文観測をして官報に載せることで正式決定となります。官報に載せるのは前年の2月なので、例えば、2022年の春分と秋分の日は2021年2月に確定します。

したがって、2年後の春分と秋分の日は「未定」という扱いとなります。もちろん国立天文台は計算によって2030年まで予想していますが、予測の通りになる保証はありません。

質問3-1)何年後かの春分の日・秋分の日はわかるの?
https://www.nao.ac.jp/faq/a0301.html

  • 2020年 春:3月20日(金) 秋:9月22日(火)
  • 2021年 春:3月20日(土) 秋:9月23日(木)
  • 2022年 春:3月21日(月) 秋:9月23日(金)
  • 2023年 春:3月21日(火) 秋:9月23日(土)
  • 2024年 春:3月20日(水) 秋:9月22日(日)
  • 2025年 春:3月20日(木) 秋:9月23日(火)
  • 2026年 春:3月20日(金) 秋:9月23日(水)
  • 2027年 春:3月21日(日) 秋:9月23日(木)
  • 2028年 春:3月20日(月) 秋:9月22日(金)
  • 2029年 春:3月20日(火) 秋:9月23日(日)
  • 2030年 春:3月20日(水) 秋:9月23日(月)

 

(5)祝日のデータを取得する

内閣府のサイトで国民の祝日と休日のデータを取得することができます。このデータは祝日の他、振替休日と国民の休日も含みます。

「国民の祝日」について
https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html

f:id:waenavi:20191117105732j:plain

 

CSV形式ですがそのままExcelで開いて問題ありません。公開されているデータは来年分までです。翌々年の祝日は確定していないので、内閣府のサイトに載ることは行政手続きとしてあり得ません。

f:id:waenavi:20191117105903j:plain

 

3.デフォルトの祝日を入力してみよう

問題

祝日法の規定にしたがって、2020年の祝日の表を作りなさい。ただし、改正法適用前のデフォルトの日付とする。

f:id:waenavi:20191117110010j:plain

 

解説

前述のように祝日のデータは内閣府のサイトから取得することができますが、あえてExcelで計算してみましょう。まず、西暦、祝日の名称、月日、曜日を入力します。年・月・日を分けて入力しているのは翌年以降に対応するためです。

f:id:waenavi:20191117110055j:plain

 

次に、春分・秋分の日を除いて「計算上」の祝日を求めます。月日が決まっている場合は、DATE関数で求めます。

  • =DATE(A4,F4,G4)

f:id:waenavi:20191117110321j:plain

 

成人の日とスポーツの日は第2月曜ですが、6日の日付を7の倍数で切り上げて2を足して求めます(参考:【Excel関数】第1、第2、最終などの特定の曜日の日付を求める計算方法まとめ)。

  • =CEILING(DATE(年,月,6),7)+2

f:id:waenavi:20191117110437j:plain

 

海の日と敬老の日は9を足します。

  • =CEILING(DATE(年,月,6),7)+9

f:id:waenavi:20191117110503j:plain

 

4.祝日法の改正に対応する

問題

改正法を適用した2020年と2021年の祝日を求めなさい。ただし、2021年の春分の日は3月20日、秋分の日は9月23日とする。

f:id:waenavi:20191117110705j:plain

 

解説

前述のように「改正法」によって日付を動かすことは可能であり、計算上の祝日が必ずしも実際の祝日になるとは限りません。また、春分秋分の日を手動で入力する必要があります。そこで、計算上の日付に上書きできるようにします。

f:id:waenavi:20191117110736j:plain

 

デフォルトの表をコピーします。

f:id:waenavi:20191117110853j:plain

 

貼り付けます。

f:id:waenavi:20191117110955j:plain

 

2020年の春分の日は3/20、海の日は7/23、山の日は8/10、秋分の日は9/22、スポーツの日は7/24です。

f:id:waenavi:20191117111023j:plain

 

C列が空欄だったら、計算上の日付を採用して、C列に入力されていれば、C列・D列の日付にします。

  • =IF(C3="",I3,DATE(A3,C3,D3))

f:id:waenavi:20191117111101j:plain

 

曜日を求めてみましょう(参考:【Excel】日付から曜日を自動で表示するのにWEEKDAY関数を使ってはいけない)。日曜日が2つありますので、振替休日が2回あります。

  • =TEXT(B3,"aaa")

f:id:waenavi:20191117111220j:plain

 

行を増やして振替休日を追加します。

f:id:waenavi:20191117111404j:plain

 

デフォルトを2021年にして、コピーします。

f:id:waenavi:20191117111514j:plain

 

下に貼り付けます。

f:id:waenavi:20191117111656j:plain

 

2021年の春分の日を3/20、秋分の日を9/23にします。なお、日曜日が無いので振替休日はありません。

f:id:waenavi:20191117111829j:plain

 

5.毎年更新しなければならない

春分の日、秋分の日のほか、スポーツの日など毎年日にちが替わります。祝日を判定するためには、かならず「年・月・日」が必要です。これらはシリアル値で入力する必要があり、文字列は不可です。

f:id:waenavi:20191117112256j:plain

 

ただし、シリアル値で入力していれば、分かりやすくするために表示形式を変更するのは構いません。

f:id:waenavi:20191117112556j:plain

 

2021年まで追加しましたが、2022年以降のカレンダーを作るのであれば、2022年以降の休日のデータをあらかじめ追加しておかなければなりません。このように、毎年、休日を追加または更新していかなければなりません。

f:id:waenavi:20191117112747j:plain

 

6.特別な休業日や連休を追加する

問題

(1)次の4つを休業日として追加しなさい。

  • 大型連休 4月30日から5月2日まで
  • 夏季休業 8月13日から15日まで
  • 創立記念日 10月1日
  • 年末年始休業 12月29日から翌年1月3日まで

(2)2020年の創立記念日を10月2日に変更しなさい。

(3)2021年8月12日を、2021年限定の特別な休業として追加しなさい。 

解説

毎年休業することが分かっている場合、デフォルトの表に追加しておきます。

f:id:waenavi:20191117113005j:plain

 

これを2回コピーして下に貼り付けます。2020年と2021年にします。

f:id:waenavi:20191117113221j:plain

 

これで完成です。

f:id:waenavi:20191117113317j:plain

 

2020年の創立記念日を10月2日にします。

f:id:waenavi:20191117113353j:plain

 

また、イレギュラーな休日として2021年8月12日を追加します。

f:id:waenavi:20191117113430j:plain

 

7.月間予定表に休日を追加する

問題

次のような予定表を作成した。

(1)土曜・日曜・休日をグレーで塗りつぶしなさい。
(2)予定の欄に休日の名称を入れなさい。

f:id:waenavi:20191117113524j:plain

 

解説

さきほど作成した休日の表の日付と名称を含む範囲(B~E列)を選択します。

f:id:waenavi:20191117113630j:plain

 

名前ボックスで「休日」という名前を設定します。

f:id:waenavi:20191117113703j:plain

 

日付と曜日を選択します。条件付き書式、新しいルールで、数式を使用して、書式設定するセルを決定にします。

f:id:waenavi:20191117113838j:plain

 

土日をグレーにします。

  • =WEEKDAY(A5,2)>=6

f:id:waenavi:20191117113928j:plain

 

さらに、休日に含まれるかを判定します。

  • =COUNTIF(休日,A5)>0

f:id:waenavi:20191117114052j:plain

 

土曜日と日曜日と休日がグレーになりました。

f:id:waenavi:20191117114007j:plain

 

休日の名称はVLOOKUP関数で求めます。

  • =IFERROR(VLOOKUP(A5,休日,4,0),"")

f:id:waenavi:20191117114143j:plain

 

月を変えて確認します。

f:id:waenavi:20191117114218j:plain

 

8.カレンダーに休日を追加する

問題

次のようなカレンダーを作成した。

(1)土曜・日曜・休日を赤色にしなさい。
(2)日付の下に休日の名称を入れなさい。

f:id:waenavi:20191117114404j:plain

 

解説

日付を選択します。条件付き書式、新しいルールで、数式を使用して、書式設定するセルを決定にします。

f:id:waenavi:20191117114506j:plain

 

さきほどと同じように土日と休日に含まれるかを判定します。

  • =OR(WEEKDAY(A5,2)>=6,COUNTIF(休日,A5)>0)

f:id:waenavi:20191117114622j:plain

 

土曜日と日曜日と休日が赤色になりました。

f:id:waenavi:20191117114707j:plain

 

休日の名称はVLOOKUP関数で求めます。

  • =IFERROR(VLOOKUP(A5,休日,4,0),"")

f:id:waenavi:20191117114745j:plain

 

月を変えて確認します。

f:id:waenavi:20191117114916j:plain

 

9.さいごに:祝日や休日の色が変わらない件

ここまで、休日の表を作ってカレンダーや月間予定表に反映させる方法を解説しました。祝日や休日の色を変えるだけであれば、本当は、祝日と名称の2列だけでできます。しかし、これを使って条件付き書式を設定するだけでは何の勉強にもなりません。

f:id:waenavi:20191117115002j:plain

 

自分で休日のリストを作ってみることで初めて色が変わるロジックが分かるのです。リストをシリアル値で入力し、カレンダーもシリアル値で作成するから色が変わるのです。「祝日や休日の色を変えるのができない」などと悩んでいる暇があったら、一から自分で作って本気で勉強してみてはいかがでしょうか?

f:id:waenavi:20191117115155j:plain

 


解説は以上です。


 


Copyright(C)2018-2019 waenavi, All rights reserved. [www.waenavi.com 定礎 平成三十年八月]