• ベストアンサー

Excel、特定の期間に色をつける(または「○○」と表示する)には?

エクセルでカレンダーを作っています。 A列に 5月1日 5月2日   ・   ・ 5月31日 と1ヶ月分の日付が入力されています。 毎月15~22日の間に特定の業務を行うので、 A列が15~22日であれば隣のB列のセルに色をつけるか、 例えば「業務日」などと表示したいのですがどうしたら良いでしょうか? また、15日が土日の場合、業務開始は直前の平日に繰り上がり、 22日がそうであれば業務終了は直後の平日に繰り下がるので、 A列の曜日から判断してB列の表示も繰り上げたり 繰り下げたりできると嬉しいのですが…。 よろしくお願いいたします。

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

  • ベストアンサー
noname#29107
noname#29107
回答No.4

1行目には、見出しが入っており、日付はA2から入っているとします。 条件付き書式の数式: =OR(AND(DAY(A2)>=15,DAY(A2)<=22),AND(DAY(A2)=13,WEEKDAY(A2,2)=5),AND(DAY(A2)=14,OR(WEEKDAY(A2,2)=5,WEEKDAY(A2,2)=6)),AND(DAY(A2)=23,OR(WEEKDAY(A2,2)=1,WEEKDAY(A2,2)=7)),AND(DAY(A2)=24,WEEKDAY(A2,2)=1)) B列に業務日と表示: =IF(OR(AND(DAY(A2)>=15,DAY(A2)<=22),AND(DAY(A2)=13,WEEKDAY(A2,2)=5),AND(DAY(A2)=14,OR(WEEKDAY(A2,2)=5,WEEKDAY(A2,2)=6)),AND(DAY(A2)=23,OR(WEEKDAY(A2,2)=1,WEEKDAY(A2,2)=7)),AND(DAY(A2)=24,WEEKDAY(A2,2)=1)),"業務日","") 祝祭日の考慮は、ちとキツイでしょうね。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

関数式による解決も、関数式が複雑になるようなので VBAで考えてみました。 A1に月初めの日があり、以下A列に日付が入っているとします。 15-22間の日はA列セルを黄色に、土日はA列を赤に色を付けました。15日が土日の場合は平日金曜日に繰り下げ、22日が土日の場合は平日月曜日に繰り上げしています。 丁度良い例と思い、16年8月でテストして見ました。 祝日対応は更に複雑になるので略。 Sub test02() d1 = Cells(1, "A") For i = 15 To 22 s = i p01: d2 = DateSerial(Year(d1), Month(d1), s) If Weekday(d2, 2) > 5 Then Cells(s, "A").Interior.ColorIndex = 3 Select Case s Case Is <= 15 s = s - 1 GoTo p01 Case Is >= 22 s = s + 1 GoTo p01 Case Else GoTo p02 End Select GoTo p02 Else Cells(s, "A").Interior.ColorIndex = 6 End If p02: Next i End Sub (テスト例) 2004/8/12 2004/8/13(黄色) 2004/8/14(赤) 2004/8/15(赤) 2004/8/16(黄色) 2004/8/17(黄色) ・・・ 2004/8/20(黄色) 2004/8/21(赤) 2004/8/22(赤) 2004/8/23(黄色) 2004/8/24

ppr
質問者

お礼

お礼が遅くなりました。申し訳ありません。 ご回答くださいました皆様、色々な方法を授けていただきありがとうございました。 まとめてのお礼で大変恐縮なのですが、皆様にはとても感謝いたしております。 ポイントですが、本当は平等にお分けしたいところなのですけれど、 心をオニにして(笑) 実際に方法を使わせて頂いた方に20pt、 色々お考えくださり2度目の投稿まで頂いた方に10ptということで(すみません、私にはマクロはハードルが高すぎました) あしからずご了承ください。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • gura_
  • ベストアンサー率44% (749/1683)
回答No.3

A1-A31 まで日付が、2004/5/1 - 2004/5/31 が入っていて、「セルの書式表示」が、「日付」の設定で、5月1日 - 5月31日 となっているとして、  b1 の 「条件付き書式の設定」で「数式」を =OR(AND(A1>38122-1,A1<38129+1),AND(OR(A1=38122-1,A1=38122-2),OR(WEEKDAY(A1)=6,WEEKDAY(A1)=7)),AND(OR(A1=38129+1,A1=38129+2),OR(WEEKDAY(A1)=2,WEEKDAY(A1)=1))) として、「書式」でパターンの色などを指定してください。  さらに、これをb31まで、「コピー」もしくは「書式コピー」すれば良いと思います。 ・・・・ 確認済み  なお、38123は2004年5月15日の、38129は2004年5月22日 の数値表示です。 足りない分は、エクセルのヘルプや、#1さん指定のURLなども参考にして下さい。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

(1)日にちが固定の場合 (2)>隣のB列のセルに色をつけるか->条件該当行の指定列のセルに色を付ける、は下記で出来ました。 A1:C31を範囲指定する。 書式-条件付き書式-数式が-=AND(DAY($A1)>=15,DAY($A1)<=22)-パターン指定-OK (注意。$を上記のように付けること。比較演算子を=<でなく<=にすること) 土日(祝)の場合繰り上げ繰り下げは難しそう。 ANDの中にWEEKDAY(A1,3)<5をもうひとついれてやってみます。

すると、全ての回答が全文表示されます。
  • sanpin-cha
  • ベストアンサー率48% (533/1095)
回答No.1

いろいろ例題がでてます。 URLを参考にして下さい。

参考URL:
http://www2.odn.ne.jp/excel/waza/cformat.html
ppr
質問者

補足

ご回答ありがとうございます。 実は、リンク先サイトの「土日祝日に色を付ける」を見ながら例題と同じ方法でカレンダーを作成していました。 一定の期間に色づけするのは「条件付き書式」で何らかの指定をすれば良さそう、という考えには何とか辿り着いたのですが、その先が解らず質問してみた次第です。 参考URLの内容を、もう一度よく読んでみます。

すると、全ての回答が全文表示されます。

関連するQ&A