|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
我是一卡通运维工程师,周一,领导发疯,突然交代导出门禁每个门下的已授权人员名单! 虽然一卡通程序本身提供了这个功能,到时没有导出数据的功能,也就是只能看,不能导出。上百个门组,超过10万条授权记录,如果用当前程序查询后一个个往EXCEL中记录,得到猴年马月才能完成。
一番思索,想到了EXCEL编程,把门信息、员工信息、授权信息都从数据库里导出来,然后利用VBA多表联合查询得出结果,岂不痛快!从周一开始,一直搞到周四才出结果,整整4天!
这是原理:
这是对各类数据进行保护后交个用户使用的最终结果:
这是VBA代码截图:
这是所有代码:
Sub test()
Dim i As Integer
'先清空
For i = 2 To 2000
If Cells(i, 2) = "" Then Exit For
Cells(i, 2) = ""
Cells(i, 3) = ""
Cells(i, 4) = ""
Next i
'获取访问组编码
AG_Name = Cells(2, 1)
On Error Resume Next
AG_NameRow = Sheets("A楼所有访问组").Range("B:B").Find(AG_Name).Row
AG_Guid = Sheets("A楼所有访问组").Range("A" + CStr(AG_NameRow)).Value
'填充查询结果
Dim res As String
resArr = myLookUp(CStr(AG_Guid))
For i = 0 To 2000
On Error Resume Next
res = resArr(i)
empNo = Sheets("所有人员权限").Range("a" + res).Value
If res = "" Then Exit For
Cells(i + 2, 2) = empNo
'从员工信息表根据员工编号查找姓名
empRow = Sheets("员工信息").Range("D:D").Find(empNo).Row
empName = Sheets("员工信息").Range("G" + CStr(empRow)).Value
'从部门编码表查找部门名称
empDptId = Sheets("员工信息").Range("B" + CStr(empRow)).Value
empDptRow = Sheets("部门编码").Range("A:A").Find(empDptId).Row
empDpt = Sheets("部门编码").Range("E" + CStr(empDptRow)).Value
'MsgBox empName
Cells(i + 2, 3) = empName
Cells(i + 2, 4) = empDpt
Next i
If Cells(2, 2) = "" Then Cells(2, 2) = "该访问组下无人员信息"
MsgBox "查询已成功完成"
End Sub
' 在sheet3.所有人员权限 中查找指定字符串并返回员工编号,返回结果为数组
Function myLookUp(content As String)
'将查询到的行编号保存到数组里
Dim findResRow(2000) As String
Dim n As Integer
'5个访问组中查询人员
For Each Rng In Sheets("所有人员权限").Range("K2:O65536")
If Rng = content Then
findResRow(n) = Rng.Row
n = n + 1
End If
Next
myLookUp = findResRow
End Function
附件可免费、免积分下载源代码哟
大家在使用过程中有问题可随时联系我:我的微信二维码:
添加好友备注:EXCEL编程即可,简单问题我都会答复,但是要是复杂的编程得给我发个小于5元的红包我才能安心研究测试
|
-
加我微信
-
EXCEL多表查询VBA
-
EXCEL多表查询VBA
-
EXCEL多表查询VBA
-
-
多表查询VBA代码.rar
866 Bytes, 下载次数: 154
EXCEL多表查询VBA
|