excel如何把同一个工作簿中,指定工作表合并到一张工作表上(请使用VBA)

比如,我工作簿中有表1,表2,表3,表4,表5,表6。每张表的表头都是2行。我想只合并表1,表2,表3,表4.这四张表合并到 一张总表上,要求只留表1的表头。如何写啊。我都折腾了3天了,总是全部合并,,,求大神帮忙啊。谢谢啊。。。

按ALT+F11调出VBA窗口,插入一个模块,然后把下面的代码复制进去。

Sub hz()
   Set NewSheet = Sheets.Add(Type:=xlWorksheet) '生成一个新表
   Sheets(NewSheet.Index).Move Before:=Sheets(1) '将此新表移动到最前面
   For i = 2 To Worksheets.Count
   Sheets(i).UsedRange.Copy NewSheet.Cells([a65536].End(xlUp).Row + 2, 1) '将其他表的已使用区域复制到新表中
   Next i
   MsgBox "合并完成"
End Sub

执行代码即可

追问

这样不是就把这个工作薄中所有表都合并了呢,并且,所有表的表头是一样的,表头有两行,用您的方法,会留下所有的表头,我们只需要留下表1的表头就行了。希望我能说清楚了,

追答

哦,这样呀,那就把代码改成下面:

Sub hz()
   Set NewSheet = Sheets.Add(Type:=xlWorksheet) '生成一个新表
   Sheets(NewSheet.Index).Move Before:=Sheets(1) '将此新表移动到最前面
   For i = 2 To Worksheets.Count
    na = Sheets(i).Name
    If na = "表一" Then Sheets(i).UsedRange.Copy NewSheet.Cells([a65536].End(xlUp).Row + 1, 1)
    If na = "表二" Or na = "表三" Or na = "表四" Then
        Sheets(i).UsedRange.Offset(2, 0).Copy NewSheet.Cells([a65536].End(xlUp).Row + 1, 1)
    End If
   Next i
   MsgBox "合并完成"
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-24
其实,这个问题很简单,excel有个vlookup是查找列的函数,还有的函数是查找行的。hlookup。你可以用表头为匹配条件查找其他行。当然唯一不方便的是,因为你是6张表,所以需要分5部分写函数。
第2个回答  2014-01-24
对表2、3、4的格式有要求吗?(即:是要复制,还是直接赋值也可以?)
最终是生成张新表还是直接在表1中?追问

表1,表2,表3,表4 是我经常维护的表,这四张表表头是一样的,但是内容不一样,我想当我每次更新完表1,表2,表3,表4,就点击宏按钮,生成总表,并把原来的总表替换掉。这样我会永远看到更新后的总表。
我希望大神能够帮助我,在这个工作薄中有许多张表,但是我只需要合并表1,表2,表3,表4。。

追答

方便的话请把表发我邮箱,不想返工,谢谢理解
[email protected]

相似回答