如果该行中的单元格已被条件格式化,则突出显示单元格或行
Highlighting Cell or Row IF a cell in that row has been conditionally formatted
我有一个大型 excel 文档,其中包含 200 多列和数百行。我设置了一堆条件格式规则,如果文本不正确,这些规则会将单元格变为红色。 (我在不同的 sheet 上做 VLOOKUP 公式,所以每一行都必须有特定的文本,否则 VLOOKUP 会出错。)问题是,有这么多行和列,很难找到红色的单元格。如果该行中有一个红色的条件格式单元格,我正在寻找一种方法来突出显示整行黄色或该行的第一个或第二个单元格。
我已经搜索 google 几个小时来寻找执行此操作的方法,但所有内容都指向 "it's not possible",这让我难以置信。我能够编写一个 VBA 脚本,如果我将单元格填充为红色,它就可以工作,但是当它根据条件格式设置规则为红色时,它将无法工作。 (注意,我刚学VBA)
Sub FindingColor()
Dim r1 As Range, r2 As Range, r As Range
Dim nFirstRow As Long, nLastRow As Long, ic As Long
Set r1 = ActiveSheet.UsedRange
nLastRow = r1.Rows.Count + r1.Row - 1
nFirstRow = r1.Row
For ic = nFirstRow To nLastRow
Set r2 = Intersect(r1, Rows(ic))
For Each r In r2
If r.Interior.ColorIndex = 3 Then
r2(2).Interior.ColorIndex = 27
Exit For
End If
Next r
Next ic
End Sub
您需要检查 DisplayFormat 属性 以测试条件格式所做的更改。
Sub FindingColor()
Dim r1 As Range, r2 As Range, r As Range
Dim nFirstRow As Long, nLastRow As Long, ic As Long
Set r1 = ActiveSheet.UsedRange
nLastRow = r1.Rows.Count + r1.Row - 1
nFirstRow = r1.Row
For ic = nFirstRow To nLastRow
Set r2 = Intersect(r1, Rows(ic))
For Each r In r2
If r.displayformat.Interior.ColorIndex = 3 Then
r2(2).Interior.ColorIndex = 27
Exit For
End If
Next r
Next ic
End Sub
您还可以检查实际开启 CFR 的条件。
我有一个大型 excel 文档,其中包含 200 多列和数百行。我设置了一堆条件格式规则,如果文本不正确,这些规则会将单元格变为红色。 (我在不同的 sheet 上做 VLOOKUP 公式,所以每一行都必须有特定的文本,否则 VLOOKUP 会出错。)问题是,有这么多行和列,很难找到红色的单元格。如果该行中有一个红色的条件格式单元格,我正在寻找一种方法来突出显示整行黄色或该行的第一个或第二个单元格。
我已经搜索 google 几个小时来寻找执行此操作的方法,但所有内容都指向 "it's not possible",这让我难以置信。我能够编写一个 VBA 脚本,如果我将单元格填充为红色,它就可以工作,但是当它根据条件格式设置规则为红色时,它将无法工作。 (注意,我刚学VBA)
Sub FindingColor()
Dim r1 As Range, r2 As Range, r As Range
Dim nFirstRow As Long, nLastRow As Long, ic As Long
Set r1 = ActiveSheet.UsedRange
nLastRow = r1.Rows.Count + r1.Row - 1
nFirstRow = r1.Row
For ic = nFirstRow To nLastRow
Set r2 = Intersect(r1, Rows(ic))
For Each r In r2
If r.Interior.ColorIndex = 3 Then
r2(2).Interior.ColorIndex = 27
Exit For
End If
Next r
Next ic
End Sub
您需要检查 DisplayFormat 属性 以测试条件格式所做的更改。
Sub FindingColor()
Dim r1 As Range, r2 As Range, r As Range
Dim nFirstRow As Long, nLastRow As Long, ic As Long
Set r1 = ActiveSheet.UsedRange
nLastRow = r1.Rows.Count + r1.Row - 1
nFirstRow = r1.Row
For ic = nFirstRow To nLastRow
Set r2 = Intersect(r1, Rows(ic))
For Each r In r2
If r.displayformat.Interior.ColorIndex = 3 Then
r2(2).Interior.ColorIndex = 27
Exit For
End If
Next r
Next ic
End Sub
您还可以检查实际开启 CFR 的条件。