筛选功能相信大家再熟悉不过了,动动小手指,勾选需要的字段即可完成。
但是当同时筛选多个字段的时候,就略微繁琐,需要一个个去下拉字段选择,这里我做了个小模板,只要鼠标点击几下,一键筛选即可。
动态展示如下:
一是多列筛选中,需要筛选哪个字段,选中哪个字段,底色被填充,突出显示;
二是点击筛选按钮,底部数据即被筛选出来。
整体来说操作感更强,可视化效果更明显。
制作过程这个模板主要是用VBA实现的,一共三段代码:
第一段最为重要,用来实现筛选框底部颜色的填充,当鼠标选择发生变化时,判断鼠标的位置,如果位于筛选框区域,这对相应的单元格底色进行填充,并在Excel固定单元格保存选中的数据;
注意点:
1、此段代码是在当前工作表Sheet1下输入的,且在代码输入框的顶部选择【Worksheet】与【SelectionChange】,表示此段代码只在当前工作表中有效,且当选择发生变化时运行;
2、3段IF语句,负责判断鼠标是否选中筛选区域,如果选中,则将对应区域底色填充,并将选中的单元格内容保存到固定单元格【m2:O2】,便于下部筛选(将这三个单元格的颜色设置为白色)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 2 And Target.Column >= 2 And Target.Column <= 8 And Target.Text <> "" And Target.Count = 1 Then
Range("B2:h2").Interior.ThemeColor = xlThemeColorLight2
Range("B2:h2").Interior.TintAndShade = 0.799981688894314
Cells(Target.Row, Target.Column).Interior.Color = 15773696
Cells(2, 13) = Target.Text
End If
If Target.Row = 4 And Target.Column >= 2 And Target.Column <= 3 And Target.Text <> "" And Target.Count = 1 Then
Range("B4:C4").Interior.ThemeColor = xlThemeColorLight2
Range("B4:C4").Interior.TintAndShade = 0.799981688894314
Cells(Target.Row, Target.Column).Interior.Color = 15773696
Cells(2, 14) = Target.Text
End If
If Target.Row = 6 And Target.Column >= 2 And Target.Column <= 3 And Target.Count = 1 Then
Range("B6:C6").Interior.ThemeColor = xlThemeColorLight2
Range("B6:C6").Interior.TintAndShade = 0.799981688894314
Cells(Target.Row, Target.Column).Interior.Color = 15773696
Cells(2, 15) = Target.Text
End If
End Sub
第二段代码主要是实现筛选的功能。
筛选
注意点:
Field:=1,代表表格的第一列删选为o2;
Field:=2,代表表格的第二列删选为m2;
Field:=3,代表表格的第三列删选为n2;
o2/n2/m2是通过第一段代码获得,在表格中,字体白色处理;
Sub 筛选()
a = Cells(Rows.Count, 1).End(xlUp).Row
Range("B9").Select
Selection.AutoFilter
ActiveSheet.Range("$A$8:$W$" & a).AutoFilter Field:=1, Criteria1:=Range("o2")
ActiveSheet.Range("$A$8:$W$" & a).AutoFilter Field:=2, Criteria1:=Range("m2")
ActiveSheet.Range("$A$8:$W$" & a).AutoFilter Field:=3, Criteria1:=Range("n2")
Range("A1").Select
End Sub
第三段代码比较简单,取消筛选,选中表格任一单元格,Selection.AutoFilter取消筛选即可。
取消筛选
Sub 清除筛选()
Range("B9").Select
Selection.AutoFilter
End Sub
也许有些小伙伴会觉得这个模板看着比较鸡肋,但在某些场景下还是比较实用的,适合多部门分享查看,给人耳目一新的感觉。
需要模板的小伙伴可在后台私我,发送“筛选”二字即可。
,