プロが教えるわが家の防犯対策術!

いろいろなサイトを参考にしながらA1(年)とC1(月)のカレンダーを自動で表示させるというものを作りました。主に以下のサイトが大変参考になりました。
http://www.h3.dion.ne.jp/~sakatsu/CalendarTopic. …
祝日一覧も別に用意してあり、日にちのセルは条件付き書式で赤く塗りつぶしができました。
土日は場所が変わらないので普通に塗りつぶしています。
日にちセルの下に予定欄を設けているのですが、諸事情により月~金は二分割しています。
ここから質問です。
月~金の予定欄を、日にちセルの条件によって塗りつぶすにはどうすればいいでしょうか?
5月の例ですと、1日は金曜日なのでその前は「C1と違う月だった場合」という条件付き書式でグレーに塗りつぶし、文字自体はIF関数で空白("")にしています。

この日にちセルが「C1と違う月だった場合」と「祝日の場合」、その下の予定欄をグレーに塗りつぶしたいです。
月が変わっても自動で塗りつぶすように設定したいのでよろしくおねがいします。

「Excelで作成したカレンダーの祝日を塗」の質問画像

質問者からの補足コメント

  • すみません。うまくできません。
    1段目のA5~J7に対して
    =A$4:B$4="" でグレーを設定(同月以外は空欄なので)
    2段目のA9~J11に対して
    =MATCH(A$8,祝日,0)>0 でグレーを設定してみましたが
    結合しているためか半分だけ塗られてしまいます。。

    あと、これはすべての段でそれぞれ設定しないとだめでしょうか?
    一つのルールでできればそのほうがよいのですが。

    「Excelで作成したカレンダーの祝日を塗」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2015/05/09 18:50

A 回答 (3件)

こんばんは!



>諸事情により月~金は二分割しています。
というコトは同じ列で「結合セル」が存在する!というコトですよね?
これではかなり厄介です。
というのはフィル&コピーする場合、すべてのセルが同じ様式でなければなりません。
(結合セルがあったり、なかったりするとフィル&コピーができないため)
本来であれば極力セルの結合は避けた方が良いのですが、少しやってみました。

↓の画像のように結合セルは「日付」のセルだけという前提です。
(予定欄のセル結合はなし!)

余計なお世話かもしれませんが、日付の入力からやってみます。
別Sheetに祝日データがシリアル値であり「祝日一覧」という名前定義されているとしています。

F1セル(セルの表示形式はユーザー定義から mmm としています)に
=DATE(A1,C1,1)
という数式を入れています。

A4セルの表示形式はユーザー定義から d としておき
=IF(MONTH($F$1-WEEKDAY($F$1,2)+INT(COLUMN(B1)/2)+7*(ROW(A4)/4-1))=$C$1,$F$1-WEEKDAY($F$1,2)+INT(COLUMN(B1)/2)+7*(ROW(A4)/4-1),"")
という数式を入れます。

A4セルの条件付き書式で 新しいルール → 数式を使用して・・・ → 数式欄に
=COUNTIF(祝日一覧,A4)
として 書式からフォント色を「赤」にしています。
これをM4セルまでフィル&コピー → A4~F4セルが選択されている状態で選択セルの四辺のどこかに
マウスポインタを移動させると上下左右の小さな矢印になるところがありますので、
Ctrlキーを押しながら
A8(8行目)にドラッグ → 同様に A12(12行目)にドラッグ  → A16・・・と
飛び飛びに数式と書式をコピーします。
これで第一段階のカレンダー作成は完了です。

次に予定欄の条件付き書式になりますが、3条件設定してみました。
すべて「数式を使用して・・・」になります。
A5~B7セルを範囲指定し数式欄に
=INDIRECT(ADDRESS(INT(ROW()/4)*4,INT(COLUMN(B1)/2)*2-1))=$F$1
として「グレー」を選択
条件を追加し
=COUNTIF(祝日一覧,INDIRECT(ADDRESS(INT(ROW()/4)*4,INT(COLUMN(B1)/2)*2-1)))
とし同じく「グレー」
さらに条件を追加し
=WEEKDAY(INDIRECT(ADDRESS(INT(ROW()/4)*4,INT(COLUMN(B1)/2)*2-1)),2)>5
として「グレー」を選択
※ すべて同じ色ですので3条件の優先順位はどうなっても構いません。

そしてA4~B7セルを範囲指定したままB7セルのフィルハンドルでN7セルまでフィル&コピー
A4~N7セルが選択されている状態で日付同様四辺の上下左右の矢印のところで
Ctrlキーを押しながら
9行目 → 13行目 → 17行目 ・・・ と書式をコピーします。
これで画像のような感じになります。m(_ _)m
「Excelで作成したカレンダーの祝日を塗」の回答画像2
    • good
    • 1
この回答へのお礼

1から丁寧に教えてくださってありがとうございます。
Ctrlキーで飛び飛びに書式コピーできるのは知りませんでした。
おかげで作りたかったカレンダーができました。

お礼日時:2015/05/10 23:48

結合していなくても、B列はA列のセルを条件として参照すればいい。


B列もA列と同じで
=MATCH(A$8,祝日,0)>0
のままでいい。ちょっとだけ修正だ。
その後A列とB列のセルを選択してJ列のセルまでコピーすればいい。
    • good
    • 0
この回答へのお礼

A列とB列にそれぞれ同じ条件を設定してからまとめてコピーすればよかったんですね。
他にも応用が効きそうなので大変勉強になりました。ありがとうございました。

お礼日時:2015/05/10 23:50

祝日は特に関係ないな。


塗りつぶしたいセルに対して条件にするセルを指定すればいいだけ。
A5からB7セルに対してはA4セルを条件にすればいい。以下同様。
そしてA4セルからK7セル、C20セルからL23セルは条件が「同月以外」「休祭日」と条件が重なるが気にしない。(「同月以外」を優先すればいい)
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています