Excel中的自动筛选是个非常强大的工具,不仅可以筛选内容,而且可以筛选颜色,例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格(下图右侧所示),其他单元格的填充色不固定,有几种颜色也不固定,那么内置的自动筛选就无能为力,使用VBA还是可以实现的。
示例代码如下。
Sub Demo()
Dim helpRng As Range, visRng As Range
Dim lastRow As Long, oSht As Worksheet
Set oSht = Sheets("Sheet1")
If oSht.AutoFilterMode Then oSht.AutoFilterMode = False
lastRow = oSht.Cells(oSht.Rows.Count, 1).End(xlUp).Row
With oSht.Range("A1:E" & lastRow)
.AutoFilter Field:=1, Criteria1:=RGB(255, 0, 0), Operator:=xlFilterCellColor
Set helpRng = .Columns(.Columns.Count).Offset(, 1)
helpRng.EntireColumn.Hidden = False
On Error Resume Next
Set visRng = helpRng.SpecialCells(xlCellTypeVisible)
On Error Go