|
今回は、第8回目です。
今回は、敬老の日と秋分の日を設定します。ところが9月は、年によって、この両祝日に挟まれる国民の休日が出現します。本来であれば、これも設定しなければならないのですが、説明が非常に面倒です。
とりあえず両祝日を先に一度設定しておいて、第9回目で一部を修正し、国民の休日を入れる方法を取ります。(9回目は、この段に続けて加筆・修正し、転載しています。)
■9月シートの設定
(28) 9月シートの設定
・敬老の日
敬老の日は、海の日と同じく今年から第三月曜日(これまでは15日)に変更されました。第三月曜日は、15日〜21日までの間ですから、該当するE18セルからE24セルへ関数式を入力します。
 |
まず、図のようにE18セルへ 「 =IF(B18="月","敬老の日","")」と入力し、E24セルまでオーフィルでコピーしてください。
B列(B18〜B24)が「月」の場合、E列摘要欄に「敬老の日」と表示されるはずです。 |
・秋分の日
秋分の日は、春分の日と同じく一定期間の秋分日を計算する簡易計算法が確立されています。下記はその計算法で秋分の日をワークシート関数で表したものです。
1980〜2099年までの期間は、A1に西暦年が入力されているとして、
「=INT(23.2488+0.242194*(A1-1980)-INT((A1-1980)/4))」となります。
この式で、その年の秋分の日を求めることができます。(9月X日のXを求めることができます)
さて、前ページの春分の日の設定で解説したように、この種の判定式は、名前の定義を利用した方が簡単で便利です。メルマガ上では、通常の方法を主体に解説しましたが、ここでは、名前の定義で解説します。
 |
挿入(I)⇒名前(N)⇒定義(D)から左図の名前の定義ダイアログボックスへ、上記で解説した秋分日を求める式を入力します。名前を「秋分日」とします。
このとき必ず、参照の「A1」は、
「$A$1」と絶対参照にします。そうしないと定義できません。
|
これで、名前の定義を利用して数式を組むことができます。(なお、入力はメモ帳などからコピー&ペーストした方が手早いです。ボックス内で式を入力するのは結構面倒なものです。)
秋分の日は、具体的には、9月22日〜24日のうちの1日です。まず、22日に該当する摘要欄E25セルへ
名前の定義を利用した以下の式
「=IF(A25=秋分日,"秋分の日","")」と入力します。
この式は、求めた秋分日がA25セル(22)と同じであれば、秋分の日と表示させ、そうでない場合は、空白を返すようにしたものです。
次にE25セル以降ですが、23日、24日、25日は前日が春分の日でかつ日曜日であった場合、振替休日になります。ですからE25セルの式とは異なります。春分の日と振替休日の両方を判定させる必要があります。それを組み入れると以下のようになります。
E26セルは、下図のように
「=IF(A26=秋分日,"秋分の日",IF(AND(E25="秋分の日",B25="日"),"振替休日",""))」となります。
この式は、はじめに名前の定義の式で秋分日かどうか判定をさせ、そうであった場合は、秋分の日を返させ、前日が秋分の日でかつ日曜日であった場合は、振替休日を返させています。両方に該当しない場合は、空白を返させるようにしています。
E27セルは
「=IF(A27=秋分日,"秋分の日",IF(AND(E26="秋分の日",B26="日"),"振替休日",""))」とします。式の構成はE26と同じなのでE26をE27へオートフィルでコピーすればOKです。
次に、E28セルは替休日だけなので
「=IF(AND(E27="秋分の日",B27="日"),"振替休日","")」となります。
ここから下は、メルマガ上での第9回目です。上記式の一部を修正して、国民の休日を設定します。
・国民の休日
先頭で説明したように、現行祝日法では、祝日と祝日に挟まれた日は、国民の休日となります。9月は、年によって敬老の日と秋分の日に挟まれる日が出現し、国民の休日となります。
敬老の日は、15日〜21日の間の月曜日。秋分の日は、22日〜24日のうちの1日ですから、この両祝日に挟まれる可能性がある日は、21日と22日ということになります。
21日は、20日が敬老の日で22日が秋分の日の場合。22日は、21日が敬老の日で23日が秋分の日の場合に国民の休日となります。
21日に該当する摘要欄E24セルには、すでに以下の式が入っています。
「=IF(B24="月","敬老の日","")」
これの、引数で空白を返すようにしている偽の処理のところへ
「IF(AND(E23="敬老の日",E25="秋分の日"),"国民の休日","")」を加えます。
この式は、前日が敬老の日で、翌日が秋分の日であれば「国民の休日」を返し、そうでなければ空白を返しなさいとなっています。この式を加えると、以下のようになります。
「=IF(B24="月","敬老の日",IF(AND(E23="敬老の日",E25="秋分の日"),"国民の休日",""))」
上図のように修正してください。
また、22日に該当する摘要欄E25セルには、すでに以下の式が入っています。
「=IF(A25=秋分日,"秋分の日","")」
これに、上記で追加した式の参照先を変えた以下の式を用意します。
「IF(AND(E24="敬老の日",E26="秋分の日"),"国民の休日","")」
この式を加えると
「=IF(A25=秋分日,"秋分の日",IF(AND(E24="敬老の日",E26="秋分の日"),"国民の休日",""))」
となりますが、実はこのままではエラーとなり、エクセルがエラーメッセージを出す場合があります。その場合は、敬老の日かどうかで判定させるのではなく、B24セルが「月」かどうかで判定させるよう以下のように修正します。
「=IF(A25=秋分日,"秋分の日",IF(AND(B24="月",E26="秋分の日"),"国民の休日",""))」です。
これで、エラーの回避ができます。
なお、エラーを回避するには、ツール(T)のオプションから計算方法タブで、「反復計算」にチェックを入れても回避可能です。
※今回はここまでです。
2009,2015,2026,2032,2037,2043,2049,2054,2060,2071,2077,2088,2094,2099の年は、9月に国民の休日が現れる年です。表示年を切り替えて確認してください。
|