条件格式设置,仅为可见细胞突出显示每行的前2个值

时间:2017-10-08 19:34:21

标签: excel vba excel-vba

我试图仅使用Excel宏中的条件格式来突出显示可见单元格的每一行的前2个值。我的范围是动态的,因此我正在运行循环以到达范围的最后一个单元格。

这是我的代码:

With Sheets("pcSupplyChainAnalysis").Select
    For i = 2 To ctr
        Set rng = Range("C" & i & ":" & "I" & i).SpecialCells(xlCellTypeVisible)
        rng.FormatConditions.AddTop10
        rng.FormatConditions(rng.FormatConditions.Count).SetFirstPriority
        With rng.FormatConditions(1)
            .TopBottom = xlTop10Top
            .Rank = 2
            .Percent = False
        End With
        With rng.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With

        rng.FormatConditions(1).StopIfTrue = False
    Next
End With

Ctr是我正在运行的计数器,用于查找最后一个非空白单元格的位置,因为我的数据也有空白值,我正在使用宏从其他工作表复制它。

ctr = 2
Do While (ActiveSheet.Range("A" & ctr).Value <> "")
    ctr = ctr + 1

Loop
ctr = ctr - 1
ActiveSheet.Range("B2:I" & ctr).Select
Selection.Cut
Range("C2:J" & ctr).Select
ActiveSheet.Paste

My data looks like this:附上我的数据格式的图像。我想突出显示每行的前两个数字,并且仅针对可见的单元格(因为我在该范围内也使用了一些过滤器)。

1 个答案:

答案 0 :(得分:0)

试试这个:

Option Explicit

Public Sub ShowTop2()
    Dim rng As Range, visibleRow As Range

    Application.ScreenUpdating = False

    With ThisWorkbook.Worksheets("pcSupplyChainAnalysis")
        .Columns.FormatConditions.Delete
        Set rng = .UsedRange.SpecialCells(xlCellTypeVisible)
    End With

    For Each visibleRow In rng.Rows
        If visibleRow.Row > 1 Then
            With visibleRow.FormatConditions
                .AddTop10
                .Item(.Count).SetFirstPriority
                With .Item(1)
                    .TopBottom = xlTop10Top
                    .Rank = 2
                    .Interior.Color = 255
                End With
            End With
        End If
    Next

    Application.ScreenUpdating = True
End Sub

确定A列中最后使用的行的更简单方法:

ctr = Worksheets("pcSupplyChainAnalysis").Cells(Rows.Count, "A").End(xlUp).Row

您不需要Select任何行动