『3つの日付を比較して対象となるセルの色を変える(条件4つ以上)』(まなみん) お世話になります。初めての質問になります。 作業進捗表を作ろうとしています。日付を比較し表の対象行の色を変化させていきたく考えています。 【比較対象の日付】 G列に作業実施日を入力。 セルC18にTODAY関数で今日の日付を設定。 A列にG列の日付から稼働日5日をマイナスした日付を設定。 条件に一致する場合日付と同じ行のC列〜N列のセルの色を指定した色に変更。 条件1:G列の日付がA列の日付とG列の日付の2日前の間⇒色ピンク 条件2:G列の日付がC18の前日⇒色:赤 条件3:G列の日付とC18が同じ日付⇒色:オレンジ 条件4:G列の日付がC18の日付の1日後⇒色薄い青 条件5:条件4に一致し、かつN列に"○"が入力されたとき⇒グレー 1〜4の条件はワークシートを開いたときに自動的に判断されて色が変更されるように、また5の条件はセルの内容が変わった ときに色が変更されるようにしたいです。 条件付き書式で考えていたのですが、どんどん条件が増えてしまってよくわからなくなってしまいました。 なにとぞお力をお貸しいただけますようお願いいたします。 (Excel:2003 OS:WindowsXP) ---- 条件が多いため、条件付書式では無理です。VBAになります。 また、条件1を再考してください。 G列の日付とG列の日付を比較するのですか? A列の日付はG列の日付の稼働日5日分マイナスですので、条件として不要に思います。 N列の○が削除されたときはどうしますか? (ROUGE) ---- 条件が3つ以上あるので条件付き書式が使用不可なことは承知していました。 言葉足らずで申し訳ありませんでした。 条件1については、稼動日数で5日前からピンクに色が変わり、 前日(条件2)と当日(条件3)の2日を省いた日数分色をピンクにしたかったんです。 マクロを使ってみようと考えましたが、入力される件数が非常に多いので 条件を再度整理してシンプルにしてみることにします。 ROUGEさん、質問を確認していただいたみなさま、 お手数をおかけしました。 ありがとぅございます。また何か困ったことがおきたら質問させていただきます。 (まなみん) ---- でしたら、下記でどうでしょうか。(ROUGE) '----  Private Sub Worksheet_Activate() Dim rng As Range, clr As Integer For Each rng In Range("G1", Range("G" & Rows.Count).End(xlUp)) If IsDate(rng.Value) Then Select Case rng.Value Case Is < Date - 5: clr = xlNone Case Is < Date - 1: clr = 7 Case Date -1: clr = 3 Case Date: clr = 46 Case Date + 1 If rng.Offset(, 7).Value = "○" Then clr = 16 Else clr = 41 End If Case Else: clr = xlNone End Select rng.Interior.ColorIndex = clr End If Next End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range, clr As Integer If Intersect(Target, Range("G:G,N:N")) Is Nothing Then Exit Sub For Each rng In Intersect(Intersect(Target, Range("G:G,N:N")).EntireRow, Range("G:G")) If IsDate(rng.Value) Then Select Case rng.Value Case Is < Date - 5: clr = xlNone Case Is < Date - 1: clr = 7 Case Date -1: clr = 3 Case Date: clr = 46 Case Date + 1 If rng.Offset(, 7).Value = "○" Then clr = 16 Else clr = 41 End If Case Else: clr = xlNone End Select rng.Interior.ColorIndex = clr End If Next End Sub