|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 opiona 于 2014-12-4 13:20 编辑
看到很多汇总需求,但是大多数是字典解决的,
我提供一个SQL的方法,最然不是最快的,是对以后编程进步有用哟!
学习SQL,请参观:http://club.excelhome.net/thread-859194-1-1.html
汇总方式1:
单个工作簿内全部工作表汇总,要求SQL所含标题名在每一个要统计的工作表中都有
完整的代码和自定义函数见附件:
全部工作表汇总到一个工作表.rar
(25.45 KB, 下载次数: 3096)
- '*********************************
- '******* 北极狐工作室出品 ******
- '******* QQ:14885553 ******
- '*********************************
- Sub Opiona()
- 'On Error Resume Next '// 发生错误,自动执行下一句,就是忽略错误
- Application.ScreenUpdating = False '//关闭屏幕刷新
- Application.DisplayAlerts = False '//关闭系统提示
- t = Timer '//开始时间
- Set SH0 = Sheets("汇总")
- SH0.Cells.Clear '//清空保存区域,全部数据第一行是标题行,且只占一行,无合并单元格
- Str_coon = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';data source=" & ThisWorkbook.FullName '//Excel2007
- ' Str_coon = "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=yes';data source=" & ThisWorkbook.FullName '//OFFICE2003,根据情况选择
- For Each SH In ThisWorkbook.Worksheets
- If SH.Name <> SH0.Name Then
- StrSQL = "SELECT 居间人,应发佣金,营业税,城建税,教育附加,'" & SH.Name & "' AS 来自工作表 FROM [" & SH.Name & "$]" '//SQL语句自己发挥吧,这里是精髓。
- IROW = SH0.Range("A1048576").End(3).Row + 1
- If IROW <= 2 Then
- IROW = 1
- Crr = GET_SQLCoon(StrSQL, Str_coon, True) '//第一次,带上标题
- Else
- Crr = GET_SQLCoon(StrSQL, Str_coon, False)
- End If
- SH0.Range("A" & IROW).Resize(UBound(Crr, 1) + 1, UBound(Crr, 2) + 1) = Crr '//粘贴查询结果
- End If
-
- Next SH
- Application.ScreenUpdating = True '//恢复屏幕刷新
- Application.DisplayAlerts = True '//恢复系统提示
- MsgBox "汇总用时:" & Format(Timer - t, "#0.0000") & " 秒", , "北极狐提示!!" '//提示所用时间
- End Sub
复制代码
补充内容 (2018-4-9 22:06):
通用一些的:汇总,然后:拆分
可增减表格数,详见:79楼!
补充内容 (2018-4-18 15:51):
汇总多个文件指定表中多个固定位置数据-通用型,80楼问题,答案见80,81 |
评分
-
6
查看全部评分
-
|