Excel 用颜色比较两列
我有三列AA、AB和AE,其中我必须分别比较所有行的AA和AB列与AE列。宏应首先检查AA和AB列,找出哪一列为琥珀色,并应将该列(仅当该琥珀色列的值为“高”)与相应的AE列的天数是否小于335天进行比较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).
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。我就是这样理解你上面的解释的:)但是这个宏没有运行,我没有得到答案。我需要的不仅仅是“它不工作”。会发生什么?你以为会发生什么?