我正在尝试确定特定单元格是否从条件格式返回TRUE值,然后突出显示整行(或者甚至只是一个单元格),如果它确实返回true。条件格式在B列中,并希望它突出显示整行。
如果条件格式在B列中返回TRUE,我最终会尝试在F列中添加数字,但如果我可以简单地确定条件格式是否返回true,我可以找出该部分。我搜索过每个论坛,网站,示例等等。我可以找到并且仍然无法使其工作。
我正在运行条件格式以搜索多个不同实例的大量数据。我能弄清楚如何做的唯一方法是将每个条件作为单独的条件格式运行。这是一个潜艇的一部分(每个潜艇有大约30个条件格式,大约有10个潜艇):
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ISNUMBER(SEARCH(""Acadia Realty Trust "",B1))"
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ISNUMBER(SEARCH(""Aimco "",B1))"
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ISNUMBER(SEARCH(""Alexandria Real Estate Equities, Inc"",B1))"
Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
我只是说我不能简单地用条件格式检查相同的测试,因为有近300种不同的测试。
更新
我尝试了Jeep建议的内容,然后我在下面评论了构建多个subs,每个都有一个数组以适应所有264个条件,但是当我这样做时它只突出显示最后一个数组,而不是所有的在第一个潜艇中遇到的条件。我使用了与下面建议的@Jeeped相同的代码,但是在数组中放了24个条件,我可以将代码转换成11个子代码,我的主代码如下所示:
Public Sub REIT()
range("B:B").Select
Call A25
Call B25
Call C25
Call D25
Call E25
Call F25
Call G25
Call H25
Call I25
Call J25
Call K25
End Sub
我最后只使用两个帮助列来重新搜索标准并对我需要的数据求和,但我仍然有突出显示的问题。
答案 0 :(得分:1)
构建一个数组并使用循环。 With ... End With statement可以处理对Application.Selection属性的引用。
Option Explicit
Sub makeThreeCFrules()
Dim v As Long, vCFRs As Variant
vCFRs = Array("=ISNUMBER(SEARCH(""Acadia Realty Trust "", $B1))", vbYellow, _
"=ISNUMBER(SEARCH(""Aimco "", $B1))", vbYellow, _
"=ISNUMBER(SEARCH(""Alexandria Real Estate Equities, Inc"", $B1))", vbYellow)
With Selection.EntireRow
.FormatConditions.Delete
For v = LBound(vCFRs) To UBound(vCFRs) Step 2
With .FormatConditions.Add(Type:=xlExpression, Formula1:=vCFRs(v))
.Interior.Color = vCFRs(v + 1)
End With
Next v
End With
End Sub
公式的问题在于您需要使用$B1
锚定列。
<强> Alternate: 强>
如果您可以在工作簿中的其他位置放置搜索术语列表,则可以使用单个“反向通配符查找”来完成此操作。
Option Explicit
Sub makeAllCFrules()
Dim v As Long, vCFRs As Variant
With Selection.EntireRow
.FormatConditions.Delete
With .FormatConditions.Add(Type:=xlExpression, _
Formula1:="=SUMPRODUCT(--ISNUMBER(MATCH(""*""&Sheet6!$A$2:$A$4&""*"",$B1, 0)))")
.Interior.Color = vbYellow
End With
End With
End Sub
在搜索字词范围内不包含任何空行非常重要。如果有,您将搜索双通配符,其中包括所有内容。当然,可以修改提供的子过程以查找搜索项的地址(如果它们可能会发生变化)。