電子書籍の厳選無料作品が豊富!

エクセルでカレンダーを作っています。
A列に

5月1日
5月2日
  ・
  ・
5月31日

と1ヶ月分の日付が入力されています。

毎月15~22日の間に特定の業務を行うので、
A列が15~22日であれば隣のB列のセルに色をつけるか、
例えば「業務日」などと表示したいのですがどうしたら良いでしょうか?

また、15日が土日の場合、業務開始は直前の平日に繰り上がり、
22日がそうであれば業務終了は直後の平日に繰り下がるので、
A列の曜日から判断してB列の表示も繰り上げたり
繰り下げたりできると嬉しいのですが…。

よろしくお願いいたします。

A 回答 (5件)

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)),"業務日","")

祝祭日の考慮は、ちとキツイでしょうね。
    • good
    • 0

関数式による解決も、関数式が複雑になるようなので


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
    • good
    • 0
この回答へのお礼

お礼が遅くなりました。申し訳ありません。
ご回答くださいました皆様、色々な方法を授けていただきありがとうございました。
まとめてのお礼で大変恐縮なのですが、皆様にはとても感謝いたしております。

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

お礼日時:2004/04/08 05:20

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なども参考にして下さい。
    • good
    • 0

(1)日にちが固定の場合


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

いろいろ例題がでてます。


URLを参考にして下さい。

参考URL:http://www2.odn.ne.jp/excel/waza/cformat.html

この回答への補足

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

補足日時:2004/04/02 00:20
    • good
    • 0

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