- ベストアンサー
土日祝を自動で赤字表示する方法
先程、Excelで日付・曜日を自動で表示させる方法を質問したのですが、 本当に何度もすみません、これが最後です。 土日祝にあたる日付と曜日を赤字で表示させなければいけないのですが 手で毎回赤字に変更するのは、大変面倒なので、 出来ればこれも自動でできないものかと思うのですが・・。 具体的には以下の通りです。 現在、Excelで以下を表示させています --------------------------- A1セル:年 A2セル:月 A3セル~A33セル:日付 B3セル~B33セル:曜日 --------------------------- A1セルは、年号を手入力 A2セルも、月を手入力 A3セル~A33セルは、以下の式を入力し、日付を自動表示 =IF(MONTH(DATE($A$1,$A$2,ROW()-2))=$A$2,TEXT(DATE($A$1,$A$2,ROW()-2),"m/d"),"") B3セル~B33セルは、以下の式を入力し、曜日を自動表示 =IF($A3<>"",MID("日月火水木金土",WEEKDAY($A3),1),"") 現在は、上記のような状態で、年月日と曜日を表示させているのですが、 土日祝を自動的に取得し、日付と曜日を赤字で表示されるようにする事は できますでしょうか? 祝日が無理なら土日だけでも赤字で自動表示させたいのですが・・。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
土日の赤表示はすでに解決済みのことと思いますので、祝休日の赤表示方法についてご説明します。 エクセルでの祝日認識は、いつが祝日になるかを入力して認識させなければなりません。とても面倒です。 以下、祝日・振り替え休日、国民の休日に関するデータの入力方法について説明します。 とても長くなります。 宿休日の定義は、平成15年より、1月1日、1月第2月曜、2月11日、春分日、4月29日、5月3日、5月5日、7月第3月曜、9月第3月曜、秋分日、10月第2月曜、11月3日、11月23日、12月23日です。上記日付が日曜に該当する場合、元旦振替休日、成人の日振替休日、建国記念の日振替休日、春分の日振替休日、みどりの日振替休日、憲法記念日振替休日、こどもの日振替休日、海の日振替休日、敬老の日振替休日、秋分の日振替休日、体育の日振替休日、文化の日振替休日、勤労感謝の日振替休日、天皇誕生日振替休日が出てきます。憲法記念日の翌日が火~金、秋分の日が第3週の水曜日である場合の前日の2つに該当すると、国民の休日が現れます。 さて、計算式です。A1に西暦年に該当する4桁の数値が入力されており、上記祝休日がA6以降のA列に順に入っているものとします。 祝日です。前から順番に、 =DATE($A$1,1,1) =DATE($A$1,1,14-WEEKDAY(DATE($A$1,1,0),3)) =DATE($A$1,2,11) 春分の日は、その年で日付が異なるので、1851~2150年まで対応可能な簡易計算式を載せます。 =DATE($A$1,3,INT(IF(AND($A$1>=1851,$A$1<1900),19.8277,IF($A$1<1980,20.8357,IF($A$1<2100,20.8431,IF($A$1<2151,21.851,""))))+0.242194*($A$1-1980)-INT(($A$1-IF(AND($A$1>=1851,$A$1<1980),1983,IF($A$1<2151,1980,"")))/4))) =DATE($A$1,4,29) =DATE($A$1,5,3) =DATE($A$1,5,5) =DATE($A$1,7,21-WEEKDAY(DATE($A$1,7,0),3)) =DATE($A$1,9,21-WEEKDAY(DATE($A$1,9,0),3)) 秋分の日も、春分の日と同様の処理です。 =DATE($A$1,9,INT(IF(AND($A$1>=1851,$A$1<1900),22.2588,IF($A$1<1980,23.2588,IF($A$1<2100,23.2488,IF($A$1<2151,24.2488,""))))+0.242194*($A$1-1980)-INT(($A$1-IF(AND($A$1>=1851,$A$1<1980),1983,IF($A$1<2151,1980,"")))/4))) =DATE($A$1,10,14-WEEKDAY(DATE($A$1,10,0),3)) =DATE($A$1,11,3) =DATE($A$1,11,23) =DATE($A$1,12,23) 振り替え休日です。 =IF(WEEKDAY(A6)=1,A2+1,"-") =IF(WEEKDAY(A9)=1,A9+1,"-") =IF(WEEKDAY(A10)=1,A10+1,"-") =IF(WEEKDAY(A11)=1,A11+1,"-") =IF(WEEKDAY(A12)=1,A12+1,"-") =IF(WEEKDAY(A13)=1,A13+1,"-") =IF(WEEKDAY(A14)=1,A14+1,"-") =IF(WEEKDAY(A15)=1,A15+1,"-") =IF(WEEKDAY(A16)=1,A16+1,"-") =IF(WEEKDAY(A17)=1,A17+1,"-") =IF(WEEKDAY(A18)=1,A18+1,"-") =IF(WEEKDAY(A19)=1,A19+1,"-") =IF(WEEKDAY(A20)=1,A20+1,"-") =IF(WEEKDAY(A21)=1,A21+1,"-") 国民の休日です。 =IF(WEEKDAY(DATE($A$1,5,3),3)<5,DATE($A$1,5,4),"-") =IF(WEEKDAY($A$17,3)=2,$A$17-1,"-") 以上でその年の祝休日を表すことができました。翌年の祝休日は、上記式の$A$1に、+1をすることで対処できます。 それらの一覧表の範囲に名前を付けます。例えば"祝休日一覧表"などと。名前の設定は説明しません。 次に、カレンダーの日付表示部分のセルに、条件付き書式設定をします。なお、日付のセルには、シリアル値(年月日)が入力されている必要があります。 祝日は最も優先される事項で扱うので、条件1に設定します。そこに、=COUNTIF(祝休日一覧表,日付が入力されているセル番地)=1と入力し、条件に合致した書式を赤になるようにします。 該当する日が祝休日なら、赤く表示されるはずです。
その他の回答 (2)
- Hageoyadi
- ベストアンサー率40% (3145/7860)
A3からA33を範囲指定した上で、書式→条件付書式と開いて、「条件(1)」を「数式が」にして「=WEEKDAY(A3)=1」のときに文字列が赤くなるように設定。続いて「条件(2)」 を「数式が」「=WEEKDAY(A3)=7」の時に文字列が青くなるように設定。B3からB33も同様に。
- Hageoyadi
- ベストアンサー率40% (3145/7860)
そうくると思って http://www.okweb.ne.jp/kotaeru.php3?q=563212 でお答えしておいたつもりですが。
補足
すみません、以下の部分がそうだったんですね >表示は条件付書式で >「数式が」を「=weekday(A1,1)=1」のときに赤 >「=weekday(A1,1)=7」のときに青 条件付書式という意味がわからなかったので、 また勉強しようと、分からないままにしていましたので 気づきませんでした・・。 本当に申し訳ありません。 条件付書式というのは、どういう風に書けばいいのでしょうか・・? 何度もすみません・・・。