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