时间:2016-04-03 20:34 来源: 我爱IT技术网 作者:佚名
excel有强大的数据处理功能,但它的“查找”功能有些单一,不能将查找到的数据提出到一个新表中,也就无法满足一些用户的需要了。尤其是在平时积累了好多数据,当有一天,我们想从中查找一些感兴趣的数据并导出时,却发现EXCEL的自带“查找”功能满足不了我们的要求,那就试试下面的方法吧。
这个方法可以把检索到的数据提取出来到一个新表中,而且只要输入前一位或前几位就可以检索。
下面以“电话交费记录”为例做一个示范表格。
从格式上说,这两个表是相同的,所不同的只是在第一行。
提示:原始数据表格的内容不一定和本例完全一样,只要检索表与原始数据表的格式一样就行了。
表格做好后,就可以编辑VBA代码了。
选中“2”表,在下面标签名上点鼠标右键,选“查看代码”,调出这个表2的VBA窗口
把代码粘贴进去
代码如下:
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基础的朋友很容易理解。
最后就可以检验效果了,在表2的B1单元格中输入“860”回车后,就把所有前三个数字相符的电话号码检索出来了。
同样,在B1格中输入数字“8”,就能把所有第一位是8的电话号码检索出来。
这个示例表格完成了一个简单的检索,为了介绍方便,只做了对一列数据的检索,有兴趣的朋友可以在此基础上增加多列检索,实用性就更强了。
这个方法可以把检索到的数据提取出来到一个新表中,而且只要输入前一位或前几位就可以检索。
下面以“电话交费记录”为例做一个示范表格。
详细的具体步骤或操作方法
第一步,准备数据表

从格式上说,这两个表是相同的,所不同的只是在第一行。
提示:原始数据表格的内容不一定和本例完全一样,只要检索表与原始数据表的格式一样就行了。
表格做好后,就可以编辑VBA代码了。

选中“2”表,在下面标签名上点鼠标右键,选“查看代码”,调出这个表2的VBA窗口
把代码粘贴进去
代码如下:
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基础的朋友很容易理解。

最后就可以检验效果了,在表2的B1单元格中输入“860”回车后,就把所有前三个数字相符的电话号码检索出来了。
同样,在B1格中输入数字“8”,就能把所有第一位是8的电话号码检索出来。
这个示例表格完成了一个简单的检索,为了介绍方便,只做了对一列数据的检索,有兴趣的朋友可以在此基础上增加多列检索,实用性就更强了。

- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
