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

比如,我工作簿中有表1,表2,表3,表4,表5,表6。每张表的表头都是2行。我想只合并表1,表2,表3,表4.这四张表合并到一张总表上,要求只留表1的表头。如何写啊。我都... 比如,我工作簿中有表1,表2,表3,表4,表5,表6。每张表的表头都是2行。我想只合并表1,表2,表3,表4.这四张表合并到 一张总表上,要求只留表1的表头。如何写啊。我都折腾了3天了,总是全部合并,,,求大神帮忙啊。谢谢啊。。。 展开
 我来答
chaohua008
2014-01-24 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5800
采纳率:14%
帮助的人:3016万
展开全部

按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
冬天樱花盛开0HD
2014-01-24 · TA获得超过531个赞
知道小有建树答主
回答量:289
采纳率:50%
帮助的人:219万
展开全部
其实,这个问题很简单,excel有个vlookup是查找列的函数,还有的函数是查找行的。hlookup。你可以用表头为匹配条件查找其他行。当然唯一不方便的是,因为你是6张表,所以需要分5部分写函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
windimi007
2014-01-24 · TA获得超过1041个赞
知道小有建树答主
回答量:852
采纳率:0%
帮助的人:810万
展开全部
对表2、3、4的格式有要求吗?(即:是要复制,还是直接赋值也可以?)
最终是生成张新表还是直接在表1中?
追问
表1,表2,表3,表4 是我经常维护的表,这四张表表头是一样的,但是内容不一样,我想当我每次更新完表1,表2,表3,表4,就点击宏按钮,生成总表,并把原来的总表替换掉。这样我会永远看到更新后的总表。
我希望大神能够帮助我,在这个工作薄中有许多张表,但是我只需要合并表1,表2,表3,表4。。
追答
方便的话请把表发我邮箱,不想返工,谢谢理解
windimi007@163.com
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式