在工作中,总是会有很多表格需要处理查询。特别是一些定期的统计十分繁琐,每次都要从不同的表格里去查找数据。最近我也被这种任务缠身,无意之下我接触了VBA,利用它的能力编写了一个查找功能,在这里给大家分享一下,代码放在文末了。
首先打开EXCEL表格,里面有你要查找的数据,本文中给大家的示例是一班、二班、三班的学生姓名、科目和成绩。

一班

二班

三班
有了要搜索的数据库之后,我们建一个名为功能表的sheet,按照下图设置好我们要搜索的元素,并将搜索数量填上。

功能表
完成之后,右击功能表,并点击查看代码,如下图

会出现代码工程界面,一定要在自己的那个excel表中右击,将鼠标放在插入上,出现选项栏后点击模块。

新建模块
选择刚插入的模块,将代码复制到右边程序编辑处,退出程序编辑界面。回到excel后点击视图,点击宏的下拉箭头,选择查看宏,出现对话框之后,选择名为gongcheng的宏,点击执行宏,就可以检索出自己想要的内容了。

执行宏
结果如下:

搜索结果
代码:
Sub gongnneng()
For n = 2 To (Sheets("功能表").Cells(2, 4) + 1)
Call fenzhi(n)
Next
End Sub
Sub fenzhi(n)
Dim WSArray()
m = ThisWorkbook.Worksheets.Count
ReDim WSArray(1 To m)
For c = 1 To m
WSArray(c) = ThisWorkbook.Worksheets.Item(c).Name
Next
For j = 2 To m
For h = 1 To 100
v = 1
Do
If WSArray(j) <> "功能表" Then
If Sheets(WSArray(j)).Cells(v, h) = Sheets("功能表").Cells(n, 1) Then
Call fuzhi(n, j, v)
Exit Sub
Else
If Sheets(WSArray(j)).Cells(v, h) = "" And v >= 10 Then
v = 1
Exit Do
End If
End If
v = v + 1
Else
Exit For
End If
Loop
Next
Next
End Sub
Sub fuzhi(n, j, v)
Dim SArray()
p = ThisWorkbook.Worksheets.Count
ReDim SArray(1 To p)
For k = 1 To p
SArray(k) = ThisWorkbook.Worksheets.Item(k).Name
Next
For x = 1 To 100
y = 1
Do
If Sheets(SArray(j)).Cells(y, x) = Sheets("功能表").Cells(n, 2) Then
Sheets("功能表").Cells(n, 3) = Sheets(SArray(j)).Cells(v, x)
Exit Sub
Else
If Sheets(SArray(j)).Cells(y, x) = "" And y >= 20 Then
y = 1
Exit Do
End If
End If
y = y + 1
Loop
Next
End Sub
以上就是我自己编写的程序,由于我是新手一枚,可能有很多不足之处,欢迎大家指正,大家还有什么想法或者需求欢迎大家讨论。

如若转载,请注明出处:http://www.cyclm.com/146093.html