遍历过滤列表并突出显示可见行总数的20%

时间:2019-01-10 12:50:20

标签: excel vba

我有一个列表被自动过滤。

我的目标是突出显示可见行总数的20%。

我已经有一个代码,但是,我不确定如何继续突出显示从第一行可见的那20%。

下面的代码突出显示所有可见行:

let data  = (datas as AnyObject).data(using: .utf8)!

示例:

如果可见行总数为50,则它将突出显示20%。在这种情况下,它将突出显示第一行中的10行。

2 个答案:

答案 0 :(得分:2)

以下代码将计算等于可见行的20%的行数,然后在达到该行数时退出For循环:

Sub HighlightTwentyPercent()

Dim sht As Worksheet: Set sht = Worksheets("Input raw")
Dim LastRow As Long, LastColumn As Long
Dim StartCell As Range, rng As Range
Dim cl As Range
Dim TwentyPc As Long, i As Long
Set StartCell = Range("F2")

LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column

Set rng = sht.Range(StartCell, sht.Cells(LastRow, 6))
TwentyPc = Round(rng.Rows.SpecialCells(xlCellTypeVisible).Count * 0.2, 0)

For Each cl In rng.SpecialCells(xlCellTypeVisible)
    i = i + 1
    If i > TwentyPc Then Exit For
    cl.Interior.Color = RGB(255, 12, 29)
Next cl
End Sub

答案 1 :(得分:1)

这可以在不使用VBA的情况下使用以下条件格式规则来完成(假设您的数据位于示例中的F2:F51上)

=SUBTOTAL(3,$F$2:$F2)<=SUBTOTAL(3,$F$2:$F$51)/5

您可能需要根据处理舍入值的方式进行调整(例如,如果要突出显示9个中的2个可见行)。