石家庄市建设局网站首页,模板wordpress演示站怎么做,免费网站模块,企业网站开发服务合同Excel中的自动筛选是个非常强大的工具#xff0c;不仅可以筛选内容#xff0c;而且可以筛选颜色#xff0c;例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格#xff08;下图右侧所示#xff09;#xff0c;其他单元格的填充色不固定#xff0c;有几种颜色…Excel中的自动筛选是个非常强大的工具不仅可以筛选内容而且可以筛选颜色例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格下图右侧所示其他单元格的填充色不固定有几种颜色也不固定那么内置的自动筛选就无能为力使用VBA还是可以实现的。 示例代码如下。
Sub Demo()Dim helpRng As Range, visRng As RangeDim lastRow As Long, oSht As WorksheetSet oSht Sheets(Sheet1)If oSht.AutoFilterMode Then oSht.AutoFilterMode FalselastRow oSht.Cells(oSht.Rows.Count, 1).End(xlUp).RowWith oSht.Range(A1:E lastRow).AutoFilter Field:1, Criteria1:RGB(255, 0, 0), Operator:xlFilterCellColorSet helpRng .Columns(.Columns.Count).Offset(, 1)helpRng.EntireColumn.Hidden FalseOn Error Resume NextSet visRng helpRng.SpecialCells(xlCellTypeVisible)On Error GoTo 0If Not visRng Is Nothing ThenoSht.AutoFilterMode FalsehelpRng.ClearvisRng.Value 1helpRng.AutoFilter Field:1, Criteria1:helpRng.EntireColumn.Hidden TrueEnd IfEnd With
End Sub【代码解析】 第4行代码获取工作表对象。 第5行代码如何工作表已经启用自动筛选请取消当前的自动筛选。 第6行代码获取A列最后数据所在行号。 第7行代码设置表格范围如果已经创建Excel表格那么可以直接使用ListObject对象。 第8行代码在第1列应用自动筛选筛选颜色为红色。 第9行代码在表格右侧添加辅助列。 第10行代码确保辅助类处于显示状态没有被隐藏否则第12行无法获取相应的单元格。 第11行代码忽略运行时错误。 第12行代码获取辅助列的可见单元格。 第13行代码恢复系统错误处理机制。 第14行代码如果可见单元格不为空说明具备红色单元格。 第14行代码取消自动筛选。 第16行代码清空辅助列。 第17行代码将可见单元格即红色所在行赋值为1。 第18行代码启用自动筛选筛选辅助列为空的单元格即非红色所在行。 第19行代码隐藏辅助列。 希望大家不用谈辅助列色变认为使用辅助类的解决方案都是很弱智的实现方法实际上合理使用辅助列可以更好的利用Excel内置功能在数据量比较大的应用场景中这通常比单纯的VBA实现方案更高效总之效率为王英雄不问出身。