[[20090224124031]] 『3つの日付を比較して対象となるセルの色を変える』(まなみん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.