ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 挑战你的Excel知识,一起测验下 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 35580|回复: 99

[分享] 用SQL汇总或合并工作表、工作簿和跨文件夹和工作表汇总

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-12-3 21:55 | 显示全部楼层 |阅读模式
本帖最后由 opiona 于 2014-12-4 13:20 编辑

看到很多汇总需求,但是大多数是字典解决的,
我提供一个SQL的方法,最然不是最快的,是对以后编程进步有用哟!
学习SQL,请参观:http://club.excelhome.net/thread-859194-1-1.html

汇总方式1:

单个工作簿内全部工作表汇总,要求SQL所含标题名在每一个要统计的工作表中都有
完整的代码和自定义函数见附件: 全部工作表汇总到一个工作表.rar (25.45 KB, 下载次数: 2287)

TA的精华主题

TA的得分主题

发表于 2014-12-3 22:03 | 显示全部楼层
没多大作用。sheet2中的个人所得税都没有汇总到。

全部工作表汇总到一个工作表.rar

27.95 KB, 下载次数: 436

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-3 22:11 | 显示全部楼层
本帖最后由 opiona 于 2014-12-3 22:28 编辑

汇总方式2:

很多工作簿在文件夹和子文件夹内,汇总全部工作簿内的同名工作表
完整的代码在附件中: 跨工作簿汇总同名工作表.rar (70.73 KB, 下载次数: 1586)

评分

参与人数 2鲜花 +7 收起 理由
带劲儿 + 2 handshake+1,于我来讲非常有用
YZLSZAJ + 5 感谢帮助

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-3 22:14 | 显示全部楼层
本帖最后由 opiona 于 2014-12-3 22:25 编辑
张雄友 发表于 2014-12-3 22:03
没多大作用。sheet2中的个人所得税都没有汇总到。
每个表都要加上:个人所得税  否则会提示出错!
SQL语句修改成下面这样既可


  1. StrSQL = "SELECT 居间人,应发佣金,营业税,城建税,教育附加,个人所得税,'" & SH.Name & "' AS 来自工作表 FROM [" & SH.Name & "$]"  
复制代码

评分

参与人数 1鲜花 +5 收起 理由
YZLSZAJ + 5 值得肯定

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-12-3 22:31 | 显示全部楼层
opiona 发表于 2014-12-3 22:14
每个表都要加上:个人所得税  否则会提示出错!
SQL语句修改成下面这样既可

这个查询怎么办?

这个查询.rar

44.91 KB, 下载次数: 120

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-3 22:46 | 显示全部楼层
汇总方式3:

多个工作簿在文件夹和子文件夹内,
各个工作簿含有数量的工作表
汇总指定工作表,相同名称的工作表标题相同
完整代码和自定义函数见附件: 跨工作簿汇总多个工作表.rar (90.27 KB, 下载次数: 1205)

评分

参与人数 1鲜花 +5 收起 理由
YZLSZAJ + 5 值得肯定

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-3 22:57 | 显示全部楼层
张雄友 发表于 2014-12-3 22:31
这个查询怎么办?

提示太复杂,可能是SQL语句超出3000字符,建议加一个中间表。
再有就是SQL连接有点问题
建议改成:

  1.             If sh.Name <> ActiveSheet.Name Then
  2.                 If .CountA(sh.UsedRange) Then
  3.                     If SQL = "" Then
  4.                         SQL = "select * from [" & sh.Name & "$A2:D65536]"
  5.                     Else
  6.                         SQL = SQL & " union all select * from [" & sh.Name & "$A2:D65536]"
  7.                     End If
  8.                 End If
  9.             End If
复制代码

点评

不行的。  发表于 2014-12-3 23:00

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-3 23:03 | 显示全部楼层
原来弄错了:
提示太复杂,可能是SQL语句超出3000字符,
减少表到20以内,可以直接出结果
建议加一个中间表,弄到一个表之后再分类汇总。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-3 23:31 | 显示全部楼层
张雄友 发表于 2014-12-3 22:31
这个查询怎么办?

SQL语句有限制,工作表太多要找个地方存中间数据
然后再求和等分类汇总,见附件模块2: 这个查询.rar (68.66 KB, 下载次数: 495)

评分

参与人数 3鲜花 +14 收起 理由
logochen + 1 感谢帮助
YZLSZAJ + 10 值得肯定
张雄友 + 3 感谢帮助

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-12-4 08:10 | 显示全部楼层
sql语句做通用的怕是总是容易出错  如果是对sql很了解的用是可以的
单列稀疏数据 单列文本数字混合 合并单元格表头 这些情况sql都极易出错
个人觉得还是用数组或者字典保险一点
当然更重要的是源数据要规范 混乱格式的源数据 什么方法也汇总出来

评分

参与人数 1鲜花 +1 收起 理由
wolfshanw + 1 感谢帮助

查看全部评分

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

本版积分规则

关注官方微信,每天学会一个新技能

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

GMT+8, 2019-9-18 11:27 , Processed in 0.074280 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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