EXCEL数据检索
excel有强大的数据处理功能,但它的“查找”功能有些单一,不能将查找到的数据提出到一个新表中,也就无法满足一些用户的需要了。尤其是在平时积累了好多数据,当有一天,我们想从中查找一些感兴趣的数据并导出时,却发现EXCEL的自带“查找”功能满足不了我们的要求,那就试试下面的方法吧。
这个方法可以把检索到的数据提取出来到一个新表中,而且只要输入前一位或前几位就可以检索。
下面以“电话交费记录”为例做一个示范表格。
步骤/方法
第一步,准备数据表一共需要两个工作表,有原始数据的工作表起名为“1”,检索用的表起名为“2”。
从格式上说,这两个表是相同的,所不同的只是在第一行。提示:原始数据表格的内容不一定和本例完全一样,只要检索表与原始数据表的格式一样就行了。表格做好后,就可以编辑VBA代码了。
第二步,制做VBA代码选中“2”表,在下面标签名上点鼠标右键,选“查看代码”,调出这个表2的VBA窗口把代码粘贴进去
代码如下:Dim aa As String '字符型Private Sub Worksheet_SelectionChange(ByVal Target As Range)Application.ScreenUpdating = False '禁止屏幕更新b = [c65536].End(xlUp).RowIf b< 3 Then b = 3Sheets("2").Range(Cells(3, 1), Cells(b, 11)).ClearContents '先清除查询区域s = Sheets("1").Range("j1") '数量(使用COUNTA确定数据记录行数)aa = Range("b1") '要查询的号码(完整或前几位)x1 = 3 '从第三行开始For x = 3 To s + 3n = Len(aa)w = Sheets("1").Cells(x, 3) '从表1中取一个C列号码赋值给变量wIf Len(w) >= n And Left(w, n) = aa Then '判断这个号码是否与要检索的相符For j = 1 To 10Cells(x1, j) = Sheets("1").Cells(x, j) '将相符号码的相关内容提取出来Next jx1 = x1 + 1End IfNextRange("b1").SelectApplication.ScreenUpdating = True '允许屏幕更新End Sub在代码中已经做了注释,有VBA基础的朋友很容易理解。
第三步,完成验收最后就可以检验效果了,在表2的B1单元格中输入“860”回车后,就把所有前三个数字相符的电话号码检索出来了。同样,在B1格中输入数字“8”,就能把所有第一位是8的电话号码检索出来。
这个示例表格完成了一个简单的检索,为了介绍方便,只做了对一列数据的检索,有兴趣的朋友可以在此基础上增加多列检索,实用性就更强了。