输入时自动筛选符合条件的条目(渐进式搜索)
来源:互联网 发布:穿越火线怎么优化 编辑:程序博客网 时间:2024/04/30 16:44
晚上闲逛EXCEL的VBA时,发现一个叫filter的函数很不错,自己以前写的一大堆代码,用这个函数替代的话,简洁非常之多,特写一段示例,,与大家分享一下。
很多财会或文员,经常会输入产品名称或客户名称等要求一字不差的项目,此时如果像google一样可以渐近式搜索并列出符合条件的条目,则会使工作轻松不少。本例并不是完整的实现代码,但稍加更改就可以用到实际工作中。
'以下是代码--------------------------------------------------------------------------
'功能:
' 在文本框输入筛选的条件 , 下方的列表框将自动列出符合条件的条目
'说明:
' 1.因为是示列,条目的来源固定为一个纵向的单元格区域(命名为"VS")
' 2.按每个词筛选,且不分词的位置前后,各词之间以空格或*号分隔
' 3.未对初始状态作处理,所以初始列表为空白
' 4.要测试本代码,请新建一个工作薄,在sheet1上的某列上输入条目,并将该区域命为"VS"
' 并添加文本框"textbox1"及列表框"listbox1",然后将代码粘贴到sheet1的代码窗口
Private Sub TextBox1_Change()
OnChange TextBox1.Text
End Sub
Private Sub OnChange(ByVal cCondition As String)
On Error GoTo errh:
Dim SourceData As Variant '条目来源
Dim Condition As String '筛选条件
Dim conditions() As String '存放分拆成词后的条件数组
Dim sCondi As Variant '用于在条件数组中循环
SourceData = Sheet1.Range("vs")
SourceData = Application.Transpose(SourceData) '因为是纵向的单元格区域 所以旋转一下
Condition = cCondition
If Len(Condition) > 128 Then Condition = Left(Condition, 128) '限制一下长度,避免出现溢出,虽然我还没试过
Condition = Replace(Condition, " ", "*") '将条件稍做处理
conditions = Split(Condition, "*")
For Each sCondi In conditions
SourceData = Filter(SourceData, sCondi, True, vbTextCompare) '按词对条目进行多次筛选过滤
Next sCondi
ListBox1.List = SourceData '赋值给列表框
Exit Sub
'如果不幸发生错误,以下语句会让我们痛个明白
errh:
MsgBox Err.Description
End Sub
'代码结束------------------------------------------------------------------------
附件地址(下载后把.JPG去掉):
http://p.blog.csdn.net/images/p_blog_csdn_net/bluewinding/EntryImages/20090720/FilterList.xls.jpg
工作表显示如下
- 输入时自动筛选符合条件的条目(渐进式搜索)
- 自动筛选符合条件的行数
- DataTable筛选符合条件的DataRow
- 通过dt筛选符合条件的结果
- Python魔法_筛选符合条件的值
- C# List 筛选条件符合项目
- mysql搜索所有符合 条件的列名
- Linux运维必会(二) - 遍历文件夹,并筛选符合条件的文件名
- Qt qtablewidget 实现筛选功能,显示符合条件的整行信息
- 利用Lambda表达式从实体集合中筛选出符合条件的实体集合
- C#自动搜索符合特征的串口号
- 【web前端】可筛选[输入搜索]的select
- 【web前端】可筛选[输入搜索]的select(重写)
- VS中的"渐进式搜索"
- mysql 对表数据进行求和分组并在结果中筛选符合条件的数据 having group by count
- 找到符合条件的整数
- 找出符合条件的组合
- 找符合条件的整数
- a run for the money 竭尽全力
- 英语面试:个人信息篇
- [英语阅读]节能新招:洋葱能发电
- 商务英语:为你的产品做宣传
- 一个使用TBB Lambda 表达式实现并行执行的例子(转)
- 输入时自动筛选符合条件的条目(渐进式搜索)
- JProbe使用说明
- Linux数据库系统MySQL应用概述
- 建立Zendframe work 框架
- 怎样才算是好的软件测试
- 在Ret Hat9下关闭防火墙
- 流行病
- xml语法
- ssh配置文件解释