Excel精英培训网

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

[已解决]合并多个excel文件

[复制链接]
发表于 2014-2-26 21:59 | 显示全部楼层 |阅读模式
本帖最后由 gumingjian 于 2014-2-27 08:18 编辑

我需要将多个excel文件合并,工作簿中包含了多个工作表sheet1 sheet2 sheet3……
有的工作表数据是在第二行开始,有的工作表在第三行开始,不知道这种情况怎么办,如果不考虑数据在哪行开始,默认第二行开始该怎么办?求高手帮忙!如果是很多个文件该怎么办?
最佳答案
2014-2-27 21:38
原来是表2没有数据!修改如下:
Sub TEST()
    Application.ScreenUpdating = False
    For Each ST In Sheets  '清除记录
        If ST.Cells(1, 1).MergeCells Then
            ST.UsedRange.Offset(2, 0).ClearContents
        Else
            ST.UsedRange.Offset(1, 0).ClearContents
        End If
    Next
    MyPath = ThisWorkbook.Path
    MYFILE = Dir(MyPath & "\*.xls")
    J = ThisWorkbook.Sheets.Count
    Do Until MYFILE = ""
        If MYFILE <> ThisWorkbook.Name Then
            Set FS = Workbooks.Open(MyPath & "\" & MYFILE)
            For I = 1 To J   '复制数据
                With FS.Sheets(I)
                    If .Cells(1, 1).MergeCells Then
                        .Range("A3:Y" & .Range("A65536").End(3).Row + 1).Copy ThisWorkbook.Sheets(I).Range("A65536").End(3)(3)
                    Else
                        .Range("A2:Y" & .Range("A65536").End(3).Row).Copy ThisWorkbook.Sheets(I).Range("A65536").End(3)(2)
                    End If
                End With
            Next
            FS.Close
        End If
        MYFILE = Dir
    Loop
    For I = 1 To J    '清除空行
        With Sheets(I)
            For J = .Range("A65536").End(3).Row To 3 Step -1
                If .Cells(J, 1) = "" Then .Rows(J).Delete
            Next
        End With
    Next
    Application.ScreenUpdating = True
End Sub
(, 下载次数: 10)

监测.zip

59.87 KB, 下载次数: 9

发表于 2014-2-26 22:30 | 显示全部楼层
把 1 2 3各个sheet的内容分别合并到合并表格的对应sheet里么?
回复

使用道具 举报

 楼主| 发表于 2014-2-26 22:49 | 显示全部楼层
王谦 发表于 2014-2-26 22:30
把 1 2 3各个sheet的内容分别合并到合并表格的对应sheet里么?

对,就是把每个excdel的各个sheet都合并到一个excel的各个sheet中去。
回复

使用道具 举报

发表于 2014-2-26 22:55 | 显示全部楼层
gumingjian 发表于 2014-2-26 22:49
对,就是把每个excdel的各个sheet都合并到一个excel的各个sheet中去。

第一行难道不都是题头么?怎么会有数据从第一行开始呢?
回复

使用道具 举报

 楼主| 发表于 2014-2-26 22:58 | 显示全部楼层
王谦 发表于 2014-2-26 22:55
第一行难道不都是题头么?怎么会有数据从第一行开始呢?

不好意思,是我说错了,我想说的是数据有的从第二行开始,有的从第三行开始。
回复

使用道具 举报

发表于 2014-2-27 07:30 | 显示全部楼层
可以在复制前加上下面一个判断,把空行给删除,保持第2行有数据。
这只是个思路,你可以根据你的具体情况修改一下!

100:

If Range("A2").Value = "" Then
   Rows(2).Select
   Selection.Delete
   GoTo 100
End If
回复

使用道具 举报

发表于 2014-2-27 07:31 | 显示全部楼层
gumingjian 发表于 2014-2-26 22:58
不好意思,是我说错了,我想说的是数据有的从第二行开始,有的从第三行开始。

[tr][/tr]
可以在复制前加上下面一个判断,把空行给删除,保持第2行有数据。
这只是个思路,你可以根据你的具体情况修改一下!

100:

If Range("A2").Value = "" Then
   Rows(2).Select
   Selection.Delete
   GoTo 100
End If







回复

使用道具 举报

发表于 2014-2-27 09:05 | 显示全部楼层
新建文件夹.rar (65.02 KB, 下载次数: 11)
回复

使用道具 举报

 楼主| 发表于 2014-2-27 14:50 | 显示全部楼层
zjdh 发表于 2014-2-27 09:05

谢谢您的帮助,我试了一下超过10个文件时就提示“不能对合并单元格做部分更改”,这是怎么回事,还请忙吗!
回复

使用道具 举报

发表于 2014-2-27 15:30 | 显示全部楼层
一定是那个文件有特殊情况!!
将那个文件上传看看。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 18:29 , Processed in 1.413944 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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