智能筛选

筛选功能相信大家再熟悉不过了,动动小手指,勾选需要的字段即可完成。

但是当同时筛选多个字段的时候,就略微繁琐,需要一个个去下拉字段选择,这里我做了个小模板,只要鼠标点击几下,一键筛选即可。

一个excel的高级筛选(Excel多条件智能筛选)(1)

动态展示如下

一个excel的高级筛选(Excel多条件智能筛选)(2)

一是多列筛选中,需要筛选哪个字段,选中哪个字段,底色被填充,突出显示;

二是点击筛选按钮,底部数据即被筛选出来。

整体来说操作感更强,可视化效果更明显

制作过程

这个模板主要是用VBA实现的,一共三段代码

第一段最为重要,用来实现筛选框底部颜色的填充,当鼠标选择发生变化时,判断鼠标的位置,如果位于筛选框区域,这对相应的单元格底色进行填充,并在Excel固定单元格保存选中的数据;

一个excel的高级筛选(Excel多条件智能筛选)(3)

注意点:

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

第二段代码主要是实现筛选的功能。

一个excel的高级筛选(Excel多条件智能筛选)(4)

筛选

注意点:

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取消筛选即可。

一个excel的高级筛选(Excel多条件智能筛选)(5)

取消筛选

Sub 清除筛选() Range("B9").Select Selection.AutoFilter End Sub

小结

也许有些小伙伴会觉得这个模板看着比较鸡肋,但在某些场景下还是比较实用的,适合多部门分享查看,给人耳目一新的感觉。

需要模板的小伙伴可在后台私我,发送“筛选”二字即可。

,