使用宏/ VBA中的3个条件进行条件格式化

时间:2014-03-19 08:50:01

标签: excel vba excel-vba

我想在Excel中编写一个宏,如果满足以下条件,则会突出整行绿色:

Emergency Type (Column B) = """"
In Window (Column N) = "On time"
Status (Column O) = "Successful"

范围是动态的,但就本例而言,它是A2:P236 我将不胜感激任何帮助。感谢。

2 个答案:

答案 0 :(得分:2)

编程?试试这个:

Sub ApplyConditionalFormatting()

Dim applyto As Range

Set applyto = Range("A2:P236") 'you can make this dynamic

Range("A2").FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=AND($B2="""",$N2=""On Time"",$O2=""Successful"")"
With Range("A2").FormatConditions(1)
    .SetFirstPriority
    With .Interior
        .PatternColorIndex = xlAutomatic
        .Color = 5287936
        .TintAndShade = 0
    End With
    .ModifyAppliesToRange applyto
    .StopIfTrue = False
End With

End Sub

HTH。

答案 1 :(得分:0)

使用Excel的条件格式设置功能。使用基于公式的格式。 您的公式应如下所示:

=(INDIRECT(ADDRESS(ROW(), 2))="""""") *
 (INDIRECT(ADDRESS(ROW(), 3))="On time") *
 (INDIRECT(ADDRESS(ROW(), 4))="Successful")

这将选择当前行的列X:

=INDIRECT(ADDRESS(ROW(), X))

没有必要在条件格式化中使用INDIRECT,但它使得活动变得更容易,因为Excel在条件格式化以及复制和过去操作方面存在一些“问题”。

这确保只有在满足所有条件时才返回true:

= bool * bool

根据Conditional formatting using AND() function,无法在条件格式中使用AND()。但是乘以布尔值是可能的,并且就像魅力一样。