Note: The other languages of the website are Google-translated. Back to English

如何将工作表或工作簿合并或合并为一个工作表?

在日常工作中,我们可能会遇到将数百张工作表或工作簿合并为一张工作表以分析数据的问题,如果您在Excel中使用“复制和粘贴”命令,则会花费大量时间。 在本教程的此处,我将提供一些快速解决此工作的技巧。

doc合并1

快速导航

使用VBA将活动工作簿的所有工作表合并为一个工作表
通过单击将数十个工作表或工作簿合并到一个工作表/工作簿中
将两个表合并为一个,并通过单击按列更新
下载样本文件


使用VBA将活动工作簿的所有工作表合并为一个工作表

在本节中,我提供一个VBA代码,该代码将创建一个新工作表,以在运行时收集活动工作簿的所有工作表。

1.激活要合并其所有工作表的工作簿,然后按 + 打开钥匙 Microsoft Visual Basic应用程序 窗口。

2.在弹出的窗口中,单击 插页 > 模块 创建一个新的模块脚本。

3.复制以下代码并将其粘贴到脚本中。

Sub Combine()
'UpdatebyExtendoffice
Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add
Sheets(1).Name = "Combined"
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
For J = 2 To Sheets.Count
Sheets(J).Activate
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
End Sub
doc合并2

4。 按 F5 键,则工作表中的所有数据都已合并到名为“合并”的新工作表中,该新工作表位于所有工作表的前面。


其他

您想加薪并有很多时间陪伴家人吗?

Office选项卡可将Microsoft Office立即工作的效率提高50%

令人难以置信的是,处理两个或多个文档比处理一个或多个文档更容易,更快捷。

与知名浏览器相比,Office Tab中的选项卡式工具功能更强大,更高效。

每天为您减少数百次鼠标单击和键盘输入,现在告别鼠标手。

如果您通常处理多个文档,Office Tab将为您节省大量时间。

30-day免费试用,无需信用卡。

了解更多现在免费下载


通过单击将数十个工作表或工作簿合并到一个工作表/工作簿中

使用VBA,您只能在活动工作簿中合并工作表,但是如何将工作簿中的工作表合并到工作表或工作簿中?

将工作簿中的工作表合并为一张工作表
doc合并18

将工作簿中的工作表合并到一个工作簿中
doc合并3

为了解决这项工作并满足对纸张组合的其他要求, 结合 功能已通过以下四种组合方案开发:

  • 将多张工作表或工作簿合并为一张
  • 将多个工作表或工作簿合并为一个工作簿
  • 将相同的姓名表合并为一张
  • 将工作表或工作簿中的值合并为一张工作表

这里以第二个选项为例:

将多个工作表或工作簿合并为一个工作簿

免费安装 Kutools for Excel,请执行以下操作:

1.激活Excel,单击 Kutools 加 > 结合,会弹出一个对话框,提醒您要合并的工作簿需要关闭。 请点击 OK 继续。
doc合并4
doc合并5

2。 在里面 合并工作表步骤1 对话框,检查 将工作簿中的多个工作表合并到一个工作簿中 选项。 点击 下一页 转到向导的下一步。
doc合并6

3。 点击 加入 > 文件 or 将您要合并的工作簿添加到 工作簿清单 窗格中,然后您可以通过检查名称来指定将哪些工作表连接在一起 工作表清单 窗格。 请点击 下一页 转到向导的最后一步。
doc合并7

4.在此步骤中,根据需要指定设置。 然后点击 结束通话.
doc合并8

5.弹出一个窗口,供您选择一个文件夹以放置组合的工作簿,然后单击 优惠.
doc合并9

现在,工作簿已合并为一个工作簿。 并且在所有工作表的最前面,还创建了一个名为Kutools for Excel的主工作表,其中列出了有关工作表的一些信息以及每个工作表的链接。
doc合并10

演示:将工作表/工作簿合并为一个工作表或工作簿

Kutools for Excel:200 +有用的便捷工具,只需单击几下即可简化Excel中的复杂任务。

跟老鼠手和颈椎病说再见

Kutools for Excel的300个高级工具可在几秒钟内解决80%的Excel任务,使您摆脱数以千计的鼠标单击。

轻松处理1500个工作场景,无需浪费时间来寻找解决方案,有很多时间可以享受生活。

包括您在内,每天为80多名高效人员提高110000%的生产力。

不再受痛苦的配方和VBA的折磨,让您的大脑得到休息和愉悦的工作氛围。

具有全部功能的30天免费试用,无故退款30天。

更好的身体创造更好的生活。


将两个表合并为一个,并通过单击按列更新

如果您想将两个表合并为一个表并根据一列更新数据,如下面的屏幕截图所示,则可以尝试 表格合并 实用程序 Kutools for Excel.
doc合并11

Kutools for Excel:超过200个方便的Excel加载项,可将复杂的任务简化为在Excel中的几次单击

免费安装 Kutools for Excel,请执行以下操作:

1。 点击 Kutools 加 > 表格合并 启用 表格合并 向导。
doc合并12

2.在向导的步骤1中,您需要分别选择主表和查找表范围。 然后点击 下一页 .
doc合并13

3.在主表上检查要更新数据的键列。 请点击 下一页 .
doc合并14

4.然后检查您要基于查找表更新数据的主表中的列。 请点击 下一页 .
doc合并15

5.在向导的步骤4中,检查要从查找表添加到主表的列。 请点击 下一页 .
doc合并16

6.在向导的最后一步,根据需要指定设置选项。 然后点击 结束通话.
doc合并17

现在,主表已更新数据并基于查找表添加新数据。

演示:将工作表/工作簿合并为一个工作表或工作簿

Kutools for Excel:200 +有用的便捷工具,只需单击几下即可简化Excel中的复杂任务。


下载样本文件

样品


推荐的生产力工具

Office选项卡-Microsoft Office 2019-2003和Office 365中的选项卡式浏览,编辑,文档管理


办公室标签

一个用于加速Excel 2019-2007的专业加载项,可将小时任务缩减为几秒钟

此外接程序包括数十个专业组,具有300多个选项,可以自动执行Excel中的大多数日常任务,并至少使生产率提高50%。 例如一组一键式opton和批量转换。
现在,您可以使用Kutools for Excel加快自己的速度!


按评论排序
注释 (168)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
使用了您的第一个宏功能。 哇! 感谢发帖
杰森米尔斯
该评论由网站上的主持人最小化
我认为代码'Selection.Offset(0, 0).Resize(Selection.Rows.Count - 1).Select' 必须不在那里。 就我而言,它所做的是从第二行开始选择缺少第一行。
埃德温
该评论由网站上的主持人最小化
我也有同样的问题。 它省略了添加的第二个工作表的第一行。
拉齐娜·K
该评论由网站上的主持人最小化
消除标题,因此您没有重复的标题
KJ
该评论由网站上的主持人最小化
像魅力一样工作,谢谢分享!
香农
该评论由网站上的主持人最小化
谢谢! 宏运行良好。
丹尼尔
该评论由网站上的主持人最小化
我不知道如何在excel中使用VBN功能,请您帮忙。
M.阿南迪
该评论由网站上的主持人最小化
很好,谢谢!!! 非常非常有用
大卫·特凯马拉泽
该评论由网站上的主持人最小化
宏一工作正常。 谢谢!! 这很棒!!!! :)
yogesh
该评论由网站上的主持人最小化
请注意,这受到 65k 行限制的限制,如果您需要增加行 Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2) 范围来解决问题。
兰迪
该评论由网站上的主持人最小化
然而,很棒的工具,它并没有结合所有 21 张纸。 如何扩大范围?
克雷格
该评论由网站上的主持人最小化
笔记!!! 您需要小心宏。如果您的数据具有连续的信息流并且没有空白行,它将起作用。 这就是“Selection.CurrentRegion.Select”行的作用。 例如,如果您需要复制电子表格上的所有数据,但(假设)第 200 行有一个空行,则宏只会向下复制到第 200 行; 它会忽略该行下面的所有数据!!!
太妃糖
该评论由网站上的主持人最小化
有谁知道避免这个问题的命令? Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select 的问题可以解决吗? Selection.Rows.Count - 1) 是引发问题的命令。 任何人??
卡洛斯
该评论由网站上的主持人最小化
与其从上往下走,不如从下往上走
Ed
该评论由网站上的主持人最小化
有谁知道解决空行和空列问题的代码? 我的数据中有它,但没有像自下而上那样简单的解决方案? 谢谢!
阿尔诺
该评论由网站上的主持人最小化
对于删除空行: 选项 1:选择 A 列中需要删除的单元格。 使用 Ctrl - 然后在弹出窗口中选择整行。 保存工作簿并退出。 然后打开工作簿。 选项 2:选择需要删除的行。 使用 Ctrl -。 保存工作簿并退出打开的工作簿。 给出选项 1,以便您可以看到正在发生的事情。 删除空列:选择列。 Ctrl -。 保存工作簿并退出打开的工作簿。
黛安
该评论由网站上的主持人最小化
我们有什么解决方案可以复制空白单元格下方的数据吗?
阿鲁尔库马尔
该评论由网站上的主持人最小化
谢谢 ! 我的第二排所有床单都是空的,我很困惑。
伊恩
该评论由网站上的主持人最小化
vba 代码运行良好,但我需要更新组合工作表,因为我将新行或新数据添加到我正在组合的工作表中的单元格。 有没有办法做到这一点? 感谢您的帮助。
利兹
该评论由网站上的主持人最小化
宏代码对于第一个组合工作表非常有效,但是当我将数据添加到我正在组合的现有工作表时,我需要更新组合工作表。 有没有办法做到这一点?
利兹
该评论由网站上的主持人最小化
当您将行添加到其他工作表时,您有没有想过如何让它在 master 中更新?
马洛里·安德森
该评论由网站上的主持人最小化
出色的工作.. 这已将我的工作时间从 2 小时减少到 10 分钟。
安托
该评论由网站上的主持人最小化
太好了,我使用了第一个宏和 Kutools,两者都极大地减少了我的数据收集和编译工作。 感谢分享。
伊德里斯·鲁尼瓦拉
该评论由网站上的主持人最小化
我刚刚删除了下面给出的部分,现在它只更新了。 希望这会有所帮助... Sheets(1).Select Worksheets.Add
阿尔珀
该评论由网站上的主持人最小化
代码效果很好! 我需要宏来复制工作表上的所有数据。 它正在切断工作表 1 之后的第一行。只有工作表一个具有标题行,其他工作表只是数据。 这可能吗?
安吉拉鱼
该评论由网站上的主持人最小化
我对“使用 VBA 代码将所有工作表合并到一个工作表”有疑问:代码工作得很好,但只有当它为空时,它才会添加标题,是否可以修改代码说不合并空工作表?
阿德南
该评论由网站上的主持人最小化
谢谢你为我节省了一个小时的复制和粘贴时间:D
德里赫拉克斯
该评论由网站上的主持人最小化
有两个工作簿,相同的数据,但第二个有额外的数据,并且一些数据已更新,inv# Status 123 7/2 open inv# status 123 7/2 open 7/7 closed 如何合并到一个中删除或突出显示重复并添加任何新的 inv# 不在第一个
黛比
该评论由网站上的主持人最小化
如果您的 A 列非 = 空白,则效果很好。 在 A 列空白的工作表上,它似乎被覆盖了。 在我的 dtaa 列中,E 在所有工作表上都是非空白的。 如何修改复制目标以考虑某些工作表上的空白列 A?
Jogan
该评论由网站上的主持人最小化
Sub CopySheet() ' ' CopySheet Macro ' ' Dim i As Integer For i = 2 To 25 Sheets("Sheet1").Select Range("A1").Select Selection.End(xlDown).Select Range("A" & CStr(Selection.Row) + 1).Select Sheets("Sheet" & CStr(i)).Select Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection .End(xlToRight)).Select Selection.Cut Sheets("Sheet1").Select ActiveSheet.Paste Next End Sub
克洛佩兹
该评论由网站上的主持人最小化
Range("A:A").SpecialCells(xlCellTypeLastCell).Select ActiveCell.Offset(1, 0).Select '使用此代码选择“A”列中的最后一个单元格 [quote] Sub CopySheet() ' ' CopySheet Macro ' ' Dim i As Integer For i = 2 To 25 Sheets("Sheet1").Select Range("A1").Select Selection.End(xlDown).Select Range("A" & CStr(Selection.Row) + 1) .Select Sheets("Sheet" & CStr(i)).Select Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection .Cut Sheets("Sheet1").Select ActiveSheet.Paste Next End Sub由克洛佩兹[/ QUOTE]
拉姆N
该评论由网站上的主持人最小化
宏代码工作得很好...... FAB Job :-)
珍妮
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0  产品特性
建议地点