Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用颜色比较两列_Excel_Vba - Fatal编程技术网

Excel 用颜色比较两列

Excel 用颜色比较两列,excel,vba,Excel,Vba,我有三列AA、AB和AE,其中我必须分别比较所有行的AA和AB列与AE列。宏应首先检查AA和AB列,找出哪一列为琥珀色,并应将该列(仅当该琥珀色列的值为“高”)与相应的AE列的天数是否小于335天进行比较 Dim High As Range Dim StartDate As Date StartDate = Date With ThisWorkbook.Worksheets("TEMPLATE") LRow = .Cells(.Rows.Count, "AB").End(xlUp).

我有三列AA、AB和AE,其中我必须分别比较所有行的AA和AB列与AE列。宏应首先检查AA和AB列,找出哪一列为琥珀色,并应将该列(仅当该琥珀色列的值为“高”)与相应的AE列的天数是否小于335天进行比较

Dim High As Range
Dim StartDate As Date

StartDate = Date

   With ThisWorkbook.Worksheets("TEMPLATE")

LRow = .Cells(.Rows.Count, "AB").End(xlUp).Row
For Each High In .Range("AB11:AB" & LRow)
    If High.Value = "High" Then
        If IsDate(.Range("AE" & High.Row)) = False Then
            .Range("AE" & High.Row).Interior.Color = vbRed
        Else
            If DateValue(.Range("AE" & High.Row)) < StartDate - 335 Then .Range("AE" & High.Row).Interior.Color = vbRed
        End If
    End If
Next High

End With
下面是我尝试过的代码,它只比较AB和AE两列。如果AB列的值为“高”,它将检查相应的AE列的天数是否小于335天

Dim High As Range
Dim StartDate As Date

StartDate = Date

   With ThisWorkbook.Worksheets("TEMPLATE")

LRow = .Cells(.Rows.Count, "AB").End(xlUp).Row
For Each High In .Range("AB11:AB" & LRow)
    If High.Value = "High" Then
        If IsDate(.Range("AE" & High.Row)) = False Then
            .Range("AE" & High.Row).Interior.Color = vbRed
        Else
            If DateValue(.Range("AE" & High.Row)) < StartDate - 335 Then .Range("AE" & High.Row).Interior.Color = vbRed
        End If
    End If
Next High

End With
Dim High As范围
Dim StartDate作为日期
开始日期=日期
使用此工作簿。工作表(“模板”)
LRow=.Cells(.Rows.Count,“AB”).End(xlUp).Row
对于每个高输入范围(“AB11:AB”和LRow)
如果High.Value=“High”,则
如果IsDate(.Range(“AE”和High.Row))=False,则
.Range(“AE”和High.Row).Interior.Color=vbRed
其他的
如果DateValue(.Range(“AE”)和High.Row))
我想这就是你想要做的。。。如果没有,它至少应该让你知道从哪里开始:)

如果将
If(someValue=False)
与else语句一起使用,会非常混乱,请将
If
翻转

Dim High As Range
Dim StartDate As Date
Dim amberColor As Boolean

StartDate = Date

With ThisWorkbook.Worksheets("TEMPLATE")

    LRow = .Cells(.Rows.Count, "AB").End(xlUp).Row
    For Each High In .Range("AB11:AB" & LRow)
        ' Assume cells aren't amber
        amberColor = False
        ' If AA is Amber
        If .Range("AA" & High.Row).Interior.Color = RGB(255, 192, 0) Then
            'Move high to AA
            Set High = .Range("AA" & High.Row)
            'Color is amber
            amberColor = True
        ' If AB is Amber
        ElseIf .Range("AB" & High.Row).Interior.Color = RGB(255, 192, 0) Then
            ' High is already in AB, don't move
            ' Color is amber
            amberColor = True
        End If

        ' If the cell was amber and the value is High
        If amberColor And High.Value = "High" Then
            ' If AE contains a date
            If IsDate(.Range("AE" & High.Row)) Then
                ' If AE is more than 335 days ago
                If DateValue(.Range("AE" & High.Row)) < StartDate - 335 Then
                    ' Make AE red
                    .Range("AE" & High.Row).Interior.Color = vbRed
                End If
            Else
                ' AE isn't a date, make it red
                .Range("AE" & High.Row).Interior.Color = vbRed
            End If
        End If
    Next High

End With
Dim High As范围
Dim StartDate作为日期
暗琥珀色为布尔色
开始日期=日期
使用此工作簿。工作表(“模板”)
LRow=.Cells(.Rows.Count,“AB”).End(xlUp).Row
对于每个高输入范围(“AB11:AB”和LRow)
假设细胞不是琥珀色的
琥珀色=假
'如果AA为琥珀色
如果.Range(“AA”和High.Row).Interior.Color=RGB(255,192,0),则
"高升到AA",
设置高=.Range(“AA”和高.Row)
“颜色是琥珀色
琥珀色=真
'如果AB为琥珀色
ElseIf.Range(“AB”和High.Row).Interior.Color=RGB(255,192,0)然后
“High已在AB中,请勿移动
“颜色是琥珀色
琥珀色=真
如果结束
'如果单元格为琥珀色且值为高
如果amberColor和High.Value=“High”,则
'如果AE包含日期
如果是IsDate(.Range(“AE”和High.Row)),则
“如果不良事件发生在335天前
如果DateValue(.Range(“AE”)和High.Row))
您的问题是什么?你的代码有效吗?您在添加所需的功能时会遇到什么问题?谢谢,但我需要对此代码进行一些澄清。此查询首先比较AA和AB列以及哪一列具有琥珀色(我发现琥珀色应为rgb(255192,0)),并与琥珀色进行比较,如果找到该值,则将检查值“高”,然后检查日期是否小于335天的对应AE列。@DeepakL Correct。我就是这样理解你上面的解释的:)但是这个宏没有运行,我没有得到答案。我需要的不仅仅是“它不工作”。会发生什么?你以为会发生什么?