使用高级筛选实时搜索数据(转)

使用高级筛选实时搜索数据(转)

2016-06-01  zy风清云淡
 

有一组数据,有时我们希望能实时检索数据,就像百度搜索那样。高级筛选为我们提供了这一可能。下边是我的原始数据(A4:C1251)。

[Excel] 使用高级筛选实时搜索数据下边先看下最终的效果。

 

如果我想搜名字中带“强”字的同学。我只需要在搜索栏输入“强”。效果如下。

[Excel] 使用高级筛选实时搜索数据

也可以全名搜索,比如输入“张可”。

[Excel] 使用高级筛选实时搜索数据

那么这是怎么实现的呢?

首先用到的就是高级筛选。高级筛选应用时,需要设置列表区域,即待筛选的数据;和条件区域,即筛选的条件。用工作表里的高级筛选功能确实可以实现上述功能,但是筛选结果,不会根据搜索框的值自动刷新。如果要实现自动刷新功能,就要用到VBA来辅助实现。

看一下VBA代码。

Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Target = Range('B2') Then

Range('A4:C1251').AdvancedFilter Action:=xlFilterInPlace, _

CriteriaRange:=Range('A1:A2'), Unique:=False

End If

End Sub

这段代码的意思是,如果B2单元格(搜索框)的值变化了,那么对单元格区域A4:C1251进行高级筛选(AdvancedFilter:高级筛选函数),筛选结果在原位置显示(Action:=xlFilterInPlace),条件列表是A1:A2(CriteriaRange:=Range('A1:A2'))。

在高级筛选的时候,筛选条件为文本时,我们可以用通配符来设置。'?'可以代表任意单个字符,'*'表示若干个字符。比如第一个例子,筛选名字中带“强”的,下图 条件列表 A1:A2中,A2的公式为='*'&B2&'*',最终结果为 *强*,这就表示筛选条件为字符串中含'强'的文本。也可以设置成 '张*',这样筛选出的就是姓张的同学。

[Excel] 使用高级筛选实时搜索数据

本例是以姓名为筛选条件的。也可以改成别的,比如课程。将A1单元格改成'课程名称',这样就以课程名来筛选了。然后搜索栏输入电路,就能找出所有课程名称中带有'电路'的课程。

[Excel] 使用高级筛选实时搜索数据

介绍的内容比较少,大家多多发散思维,一定可以实现更实用,更复杂的功能。

posted @ 2017-08-30 16:29  汉学  阅读(639)  评论(0编辑  收藏  举报