|
各位大侠:下午好!
一. 3个大表里面各有3个sheet,目前的宏只能汇总每个大表的第1个sheet的全部内容。期望能取出所有大表下所有有内容的sheet的E列和H列,转置后按顺序排列;
以十二生肖表举例:
虎5 虎5 虎5 虎5 虎5 虎5 虎5 虎5 虎5 虎5
虎8 虎8 虎8 虎8 虎8 虎8 虎8 虎8 虎8 虎8
龙5 龙5 龙5 龙5 龙5 龙5 龙5 龙5 龙5 龙5
龙8 龙8 龙8 龙8 龙8 龙8 龙8 龙8 龙8 龙8
兔5 兔5 兔5 兔5 兔5 兔5 兔5 兔5 兔5 兔5
兔8 兔8 兔8 兔8 兔8 兔8 兔8 兔8 兔8 兔8
二. 目前汇总结果没有按照文件夹里excel文件的排序来,文件夹里是: 杭州,十二生肖,数字汉字。但目前宏执行后是:十二生肖,数字汉字,杭州。
期望最终的结果能按照文件夹里excel顺序来排序。
恳请大侠出手相助,小的给你发红包{:021:}
婉君妹妹 发表于 2016-8-28 18:04
发现漏了一点没说清楚,还需要把每个sheet的名字放在转置后每行数据的前面。
但是我模仿你帮我解答的上 ... - Sub HuiZong()
- Dim myfile, mypath, wb, X, Y, i, J '声明变量
- Application.ScreenUpdating = False '关闭屏幕更新
- Sheet1.UsedRange.Offset(1, 0).Clear '清除除表头之外的所有内容
- mypath = ThisWorkbook.Path '找到当前工作簿的路径
- myfile = Dir(mypath & "\*.xls*") '遍历当前文件夹下的Excel文件
- Do While myfile <> "" '当找到的文件不为空时
- If myfile <> ThisWorkbook.Name Then '当找到的文件不是当前Excel工作簿时
- Set wb = GetObject(mypath & "" & myfile) '得到dir找到的工作簿的内容,设为wb
- For J = 1 To wb.Sheets.Count
- With wb.Sheets(J) '对找到的工作簿的sheet1进行操作
- X = .[E65536].End(xlUp).Row
- Y = .[H65536].End(xlUp).Row
- ARR = Application.Transpose(.Range("E1:E" & X))
- BRR = Application.Transpose(.Range("H1:H" & Y))
- i = Range("a65536").End(xlUp).Row + 1
- Cells(i, 1) = .Name & "资金"
- Cells(i, 2).Resize(1, X) = ARR
- Cells(i + 1, 1) = .Name & "人数"
- Cells(i + 1, 2).Resize(1, Y) = BRR
- End With
- Next
- wb.Close False '关闭wb工作簿且不保存
- End If
- myfile = Dir '寻找下一个Excel工作簿
- Loop
- Application.ScreenUpdating = True '恢复屏幕更新
- End Sub
复制代码
|
|