李小.昌宜
求助坛中面的:)Sub 合并文件夹内的工作表()
Dim str As String
Dim wb As Workbook
str = Dir("C:\Users\Administrator\Desktop\各单位填报数据文件夹\*.xls*")
For i = 1 To 100
Set wb = Workbooks.Open("C:\Users\Administrator\Desktop\各单位填报数据文件夹\" & str)
wb.Sheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Split(wb.Name, ".")(0)
wb.Close
str = Dir
If str = "" Then
Exit For
End If
Next
Sheets(1).Select
Range("A3").Select
End Sub这段代码合并文件夹内的文件但是为甚么顺序会不对啊 李小.昌宜
实际生成的顺序是这样的有没有:)知道原因了 李小.昌宜
代码是学的视频里面老师的
都是xlsx
之前用六个文件是按照顺序
变成15个顺序就乱了
头白雪为
是不是可以先把文件路径输入到单元格中 然后进行排序 再依次导入数据
头白雪为
你不是用dir 取得数据嘛 你把每一次取到的路径 先写入单元格中
然后 对单元格进行排序
再把排完序的 单元格数据用循环依次取出 导入表
算是一个折中的办法
nesE.东山
你把每个文件前面的1、2、3一直到9,改成01、02、03试试
李小.昌宜
好的
我来试试看
?山东-Esen 对了顺序对了
但是又来了一个问题
李小.昌宜
Dim arr()
arr = Array("-执勤支队", "-武汉支队", "-黄石支队", "-十堰支队", "-宜昌支队", "-襄阳支队", "-鄂州支队", "-荆门支队", "-孝感支队")
For i = 2 To 16
Sheets(1).Copy after:=Sheets(Sheets.Count)
Sheets(i).Name = i - 1 & arr(i - 2)
Next
End Sub
文件前面的的1 2 3序号是我用这个程序加上去的
没有办法在生成的时候前面有0
李小.昌宜
我直接把序号也固定到里面了不自动排序了感觉这个VBA好怪,sheet1后面直接接sheet10 nesE.东山
它程序里是把10当成了1和0两个数字,不是一个数字10
李小.昌宜
明白了,他先排的1Sub 合并()
For i = 2 To Sheets.Count
Sheets(i).Rows("3" & ":" & Sheets(i).Range("A60000").End(xlUp).Row). _
Copy Range("A" & Range("A60000").End(xlUp).Row + 1)
Next
End Sub大家帮我看看我这个合并数据的代码对吗为什么当我的合并表出现一个不填的情况,我的总表合并就乱了变成这样了出现了两行标题 头白雪为
你在循环里面把循环的条件给改了 是什么操作
李小.昌宜
就是碰到了空表的话 就以A4来控制,如果A4是空的,那么i就加一
就不复制空表了
头白雪为
你这样子 i本身循环就在+1 然后你又加了1……比如 第二个表是空的然后 循环完了i成了3 然后循环开始i就成了4 3就被跳过了…… 李小.昌宜
确实理解不是很深,挨着试了半天,这种在表头不合并的情况下好用,但是我们这个表头不行
原来是这样
头白雪为
如果 表是空的 直接结束当次循环开始下次循环就行
李小.昌宜
Sub 合并()
For i = 2 To Sheets.Count
If Sheets(i).Range("a4") = "" Then
i = i + 1
End If
Sheets(i).Rows("4" & ":" & Sheets(i).Range("A60000").End(xlUp).Row). _
Copy Range("A" & Range("A60000").End(xlUp).Row + 1)
Next
End Sub
就直接 end if?
头白雪为
你要把 i=i+1删掉……然后 下面的应该加个else虽然我没看懂你下面写的啥 头白雪为
then后面直接空着就行 直接加个else就行
李小.昌宜
就是我不是有很多表吗
用这个把他们都合并到总表里面
李小.昌宜
还是不行
Sub 合并()
For i = 2 To Sheets.Count
If Sheets(i).Range("a4") <>"" Then
Sheets(i).Rows("4" & ":" & Sheets(i).Range("A60000").End(xlUp).Row). _
Copy sheets()Range("A" & Range("A60000").End(xlUp).Row + 1)
end if
Next
End Sub
头白雪为
哪里不行
方便把数据啥的打包发出来不
光看 也看不出啥东西来