ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3709|回复: 20

用sql实现将表1-表n里的所有数据提取到总表中来

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-3-12 09:08 | 显示全部楼层 |阅读模式
工作表之间的数据提取.zip (46.68 KB, 下载次数: 30)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-12 09:55 | 显示全部楼层
有人解答下么?在线等。

TA的精华主题

TA的得分主题

发表于 2012-3-12 10:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
总表.rar (14.76 KB, 下载次数: 27)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-12 10:26 | 显示全部楼层
cbtaja 发表于 2012-3-12 10:14

大哥,要求是用sql语句实现呀。

不用vba,也不用在vba中嵌套sql,只用sql语句能不能实现?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-12 10:45 | 显示全部楼层
我想到的方法是:
1.在总表中新建 sheet1,sheet2 sheet3 sheet4,sheet5,sheet6,sheet7
2.建立“数据连接”.
sheet1 连接 表1
sheet2 连接 表2
sheet3 连接 表3
sheet4 连接 表4
sheet5 连接 表5
sheet6 连接 表n
3.从sheet1到sheet6分别输入sql语句:select * from[表1...表n$],提取表1到表n的数据。
4.在“总表”sheet7中新建“数据连接”,连接到总表的sheet1,在这个“数据连接”中输入如下sql语句:
select * from[Sheet1$]
union all
select * from[Sheet2$]
union all
select * from[Sheet3$]
union all
select * from[Sheet4$]
union all
select * from[Sheet5$]
union all
select * from[Sheet6$]





我总觉得这个方法太笨了,有没有更优的方法?

TA的精华主题

TA的得分主题

发表于 2012-3-12 11:13 | 显示全部楼层
要把多个不确定的工作薄中的数据合并到新工作薄的一个工作表中,使用SQL的效率是很低的,而使用VBA则是简单高效的,何乐而不为?

TA的精华主题

TA的得分主题

发表于 2012-3-12 11:16 | 显示全部楼层
谢谢btaja大师的指导,路过学习,我把 cbtaja大师的总表放入文件夹中,没成功,请问我什么地方没做对,这是我做的附件:
工作表之间的数据提取1.rar (50.36 KB, 下载次数: 11)
请各位大师帮我看看

TA的精华主题

TA的得分主题

发表于 2012-3-12 11:21 | 显示全部楼层
本帖最后由 cbtaja 于 2012-3-12 14:36 编辑

3楼的代码有个小问题,改正如下:
Sub 合并多工作薄的第1个表格中的数据()
Dim MyFile, MyPath, MyName, Cbook, Sht, r, n, arr
Application.ScreenUpdating = False
On Error Resume Next
n = 2
MyPath = ThisWorkbook.Path & "\"
MyFile = Dir(MyPath & "*.xlsx")
Do While MyFile <> ""
        Set Cbook = GetObject(MyPath & MyFile)
        With Cbook.Sheets("sheet1")
            r = .[a65536].End(3).Row
            arr = .Range("A2:D" & r)'原来是Sht.Range("A2:D" & r),其中的变量Sht是多余的。
        End With
        With ThisWorkbook.Sheets(1)
            .Cells(n, 1).Resize(r - 1, 4) = arr
            n = n + r-1
        End With
        Cbook.Close False
    MyFile = Dir
Loop
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-12 12:05 | 显示全部楼层
cbtaja 发表于 2012-3-12 11:21
3楼的代码有个小问题,改正如下:
Sub 合并多工作薄的第1个表格中的数据()
Dim MyFile, MyPath, MyName,  ...

代码是不是还有有问题啊?怎么汇总不了?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-12 14:27 | 显示全部楼层
8楼的代码运行后,什么表都没有提取到啊?高手来看下,代码应该没问题啊。


怎么没有数据呢?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-10 13:30 , Processed in 0.024754 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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