重发 求助在大量工作簿中查找相同代码返回需要的值
时间:2011-08-10
来源:互联网
文件夹数据库中一共有30多个工作簿
大约20多万组数据,写公式太慢啦
求高手帮帮忙 写个VBA
最好能在后面说明一下 代码的意思
附件

2011-8-10 09:35, 下载次数: 18
作者: weiqqpeng 发布时间: 2011-08-10
作者: weiqqpeng 发布时间: 2011-08-10
作者: KCFONG 发布时间: 2011-08-10
这个这个东西到底应该怎么搞啊
作者: weiqqpeng 发布时间: 2011-08-10
方法把每个表格汇总到一张SHEET里,再用Vlookup函数
建议楼主用07版,每张SHEET能装1048576行数据(03版只能装65536行)
作者: dudebad 发布时间: 2011-08-10
作者: weiqqpeng 发布时间: 2011-08-10
作者: dudebad 发布时间: 2011-08-10
代码:
此段代码放在模块1里面:Public k, t
Sub yy()
Dim Arr, myPath$, myName$, sh As Worksheet, x$
Dim wb As Workbook, i&, d, funm$
Set d = CreateObject("Scripting.Dictionary")
funm = ThisWorkbook.Name
myPath = ThisWorkbook.Path & "\数据库\"
myName = Dir(myPath & "*.xls")
Do While myName <> "" And myName <> funm
With GetObject(myPath & myName)
Set wb = Workbooks(myName)
Set sh = wb.Sheets("Sheet1")
Arr = sh.[a1].CurrentRegion
For i = 2 To UBound(Arr)
x = Arr(i, 1)
d(x) = Arr(i, 3) & "|" & Arr(i, 4) & "|" & Arr(i, 5)
Next
.Close False
End With
myName = Dir
Loop
k = d.keys
t = d.items
Set d = Nothing
End Sub
此段代码放在Thisworkbook里面:
Private Sub Workbook_Open()
Call yy
End Sub
此段代码放在工作表1里面
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 6 Or Target.Row < 2 Then Exit Sub
Dim i&
For i = 0 To UBound(k)
If Target = Val(k(i)) Then
aa = Split(t(i), "|")
Target.Offset(0, 1) = aa(0)
Target.Offset(0, 4) = aa(1)
Target.Offset(0, 6) = aa(2)
End If
Next
End Sub
作者: 蓝桥玄霜 发布时间: 2011-08-10
附件

2011-8-10 12:53, 下载次数: 1
作者: 蓝桥玄霜 发布时间: 2011-08-10
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28