みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel2007毎月●日を指定(土日祭日除く)

●質問の主旨
A5セル(商品出荷)A6セル(メルマガ配信)の各業務について、
関数式や条件付き書式を使って当該の指定日のセルを赤く塗りつぶしたいと考えています。
どのようにエクセルの関数式や条件付き書式を記述すれば良いでしょうか?
ご存知のかたご教示願います。

●前提条件

○業務上のルール
1.商品出荷→毎月1,10,20日(土日祝日が重なるときはその直前の営業日)
2.メルマガ配信→毎月21,25,1日(土日祝日が重なるときはその直後の営業日)

○条件付き書式
1.月名($C$2:$AG$2)
→「=DAY(C2)<>1」
→文字の色を白色とし月の1日のところのみ月名が表示
2.日にち・曜日($C$3:$AG$4)
→「=MATCH($C$3,祝日一覧,0)」「=COUNTIF(祝日一覧,C3)=1」「=WEEKDAY(C3)=1」「=WEEKDAY(C3)=7」
→セルの背景色を赤色・青色
→「祝日一覧」シートの祝日と日曜日はセル背景色を赤色、土曜日は青色

○その他の条件
1.B2セル→「毎月1日」を手入力するが"yyyy年m月"形式で表示
2.添付のワークシートとは別のシートに「祝日一覧」のシートが
同じファイルに存在し、2012年の祝日の日にちが記載

投稿日時 - 2012-04-25 15:58:42

QNo.7440716

困ってます

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

マクロなしでは、毎月1,10,20日や毎月21,25,1日の中で、土日祝日が重なるときはその直前の営業日を見つけるのが大変ですので、できれば、毎月1,10,20日(土日祝日が重なるときはその直前の営業日)等の一覧表を作ってから、その一覧表のB列に存在する年月日を条件付き書式とすることを、お勧めします。

毎月1,10,20日(土日祝日が重なるときはその直前の営業日)の一覧表は、以下の式をB2セルに入れて下にドラッグコピーすれば作れます。
A2セルから下にカレンダーとしての年月日があるとして、(A1セルはブランクとすること)
=IF(IF(IF(OR(DAY(A2)=1,DAY(A2)=10,DAY(A2)=20,WEEKDAY(A2)=1,WEEKDAY(A2)=7,COUNTIF(祝日一覧,A2)=1),"ok","")="","",A2-1)="","",IF(IF(IF(OR(DAY(A1)=1,DAY(A1)=10,DAY(A1)=20,WEEKDAY(A1)=1,WEEKDAY(A1)=7,COUNTIF(祝日一覧,A1)=1),"ok","")="","",A1-1)="",IF(IF(OR(DAY(A2)=1,DAY(A2)=10,DAY(A2)=20,WEEKDAY(A2)=1,WEEKDAY(A2)=7,COUNTIF(祝日一覧,A2)=1),"ok","")="","",A2-1),""))

毎月21,25,1日(土日祝日が重なるときはその直前の営業日)の一覧表は、以下の式をB2セルに入れて下にドラッグコピーすれば作れます。
A2セルから下にカレンダーとしての年月日があるとして、(A1セルはブランクとすること)
=IF(IF(IF(OR(DAY(A2)=21,DAY(A2)=25,DAY(A2)=1,WEEKDAY(A2)=1,WEEKDAY(A2)=7,COUNTIF(祝日一覧,A2)=1),"ok","")="","",A2-1)="","",IF(IF(IF(OR(DAY(A1)=21,DAY(A1)=25,DAY(A1)=1,WEEKDAY(A1)=1,WEEKDAY(A1)=7,COUNTIF(祝日一覧,A1)=1),"ok","")="","",A1-1)="",IF(IF(OR(DAY(A2)=21,DAY(A2)=25,DAY(A2)=1,WEEKDAY(A2)=1,WEEKDAY(A2)=7,COUNTIF(祝日一覧,A2)=1),"ok","")="","",A2-1),""))

投稿日時 - 2012-04-25 17:04:12

お礼

aokii様
ご回答ありがとうございます。
ご丁寧な関数式を記述していただき
大変参考になります。
取り急ぎお礼申し上げます。

投稿日時 - 2012-04-26 13:04:06

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問