Excel精英培训网

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

[已解决]请问如何对若干个EXCEL文件按科目内容汇总!

[复制链接]
发表于 2014-2-26 08:06 | 显示全部楼层 |阅读模式
本帖最后由 shenlong2006 于 2014-2-26 11:43 编辑

有若干个地区的报表文件(如下图)

01.jpg

每个报表都是按科目分类统计的(格式如下图)

02.jpg

我现在想把所有的地区按科目进行汇总,科目相同的汇在一起,比如我将北京、天津汇在一起效果如下:

QQ截图20140226113719.jpg

请问这个怎么通过VBA实现呢?
附件上传供大家研究:
汇总.rar (53.6 KB, 下载次数: 16)
发表于 2014-2-26 14:09 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim wb As Workbook, rng As Range
  3. Dim x&, y&, mypath$, myfile$, s&, s2&
  4. Application.ScreenUpdating = False
  5. Application.DisplayAlerts = False
  6. Application.StatusBar = "正在汇总………"
  7. ActiveSheet.UsedRange.Clear
  8. mypath = ThisWorkbook.Path & ""
  9. myfile = Dir(mypath & "*.xls")
  10. Do While myfile <> ""
  11.     If myfile <> ThisWorkbook.Name Then
  12.         Set wb = GetObject(mypath & myfile)
  13.         x = Range("j65536").End(xlUp).Row
  14.         wb.Sheets(1).[a5:l32].Copy Cells(IIf(x = 1, 1, x + 1), 1)
  15.         wb.Close 0
  16.     End If
  17.     myfile = Dir
  18. Loop
  19. ActiveSheet.UsedRange.UnMerge
  20. y = ActiveSheet.UsedRange.Rows.Count
  21. [b1].Resize(y, 1).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
  22. ActiveSheet.UsedRange.Sort Key1:=[b1], Order1:=xlAscending, Header:=xlGuess
  23. Set rng = [b1]: [a1] = 1
  24. s2 = 1: [c1] = 1
  25. For i = 2 To y + 1
  26.     If Cells(i, 2) = Cells(i - 1, 2) Then
  27.         s2 = s2 + 1
  28.         Cells(i, 3) = s2
  29.         Set rng = Union(rng, Cells(i, 2))
  30.     Else
  31.         s2 = 1: s = s + 1
  32.         rng.Offset(, -1).Merge
  33.         rng.Merge
  34.         Set rng = Cells(i, 2)
  35.         Cells(i, 3) = s2
  36.         rng.Offset(, -1) = s + 1
  37.     End If
  38. Next
  39. Cells(y + 1, 1) = ""
  40. Cells(y + 1, 3) = ""
  41. [1:4].Insert Shift:=xlDown
  42. Set wb = GetObject(mypath & "北京.xls")
  43. wb.Sheets(1).Range("A1:L4").Copy [a1]
  44. wb.Close 0
  45. Application.StatusBar = "已完成"
  46. Application.DisplayAlerts = True
  47. Application.ScreenUpdating = True
  48. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
shenlong2006 + 3 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-2-26 14:12 | 显示全部楼层
打开文件夹中汇总工作簿,点击按钮

汇总.zip

72.45 KB, 下载次数: 19

回复

使用道具 举报

 楼主| 发表于 2014-2-26 14:57 | 显示全部楼层
dsmch 发表于 2014-2-26 14:12
打开文件夹中汇总工作簿,点击按钮

厉害啊,creatobject()和getobject()从来就不会用,还得努力学习啊!
回复

使用道具 举报

发表于 2014-3-5 04:54 | 显示全部楼层
学无止境。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 13:11 , Processed in 3.247669 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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