Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2001|回复: 2

从2548个excel表中提取数据到同一张excel表中

[复制链接]
发表于 2019-9-2 14:52 | 显示全部楼层 |阅读模式
我有2548多个excel表,文件名从1.xlsx---2548.xlsx,每个表里含报告和数据两个sheet,需要从每个表里提取数据放到同一个表里方便统计分析,我和我同事人工打开每个excel,手工复制粘贴,效率很低很低,从网上找帖子,写了公式,比如:='C:\Users\lixiu\Desktop\puren result\puren result\[1.xlsx]报告'!$D$6,用于提取样本编号,能实现1个表的自动填充,但是不能拖拽公式把【1.xlsx】序列填充为【2548.xlsx】。
报公式里的[1.xlsx]改成[A2.xlsx]或者改成["&$A2&".xlsx]都不行.....
excel数据提取.jpg
发表于 2019-9-2 15:50 | 显示全部楼层
回复

使用道具 举报

发表于 2019-9-2 16:24 | 显示全部楼层
Sub test() '木有附件,仅是猜测
Dim cn As Object, rs As Object, p$, f$, sq$, ar(1 To 5000, 0), n&
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=NO';Data Source=" & ThisWorkbook.FullName
p = ThisWorkbook.Path & "\"
f = Dir(p & "*.xls*")
Do While f <> ""
    If f <> ThisWorkbook.Name Then
        n = n + 1
        sq = "SELECT * FROM [Excel 12.0;HDR=NO;Database=" & p & f & "].[报告$D6:D6]"
        rs.Open sq, cn, 1, 3
        ar(n, 0) = rs(0)
        If rs.State = 1 Then rs.Close
    End If
    f = Dir
Loop
[c1].Resize(n) = ar
cn.Close
Set cn = Nothing
Set rs = Nothing
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 15:52 , Processed in 0.683038 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表