上一节我们介绍了,表头不同的情况下,如何批量合并工作表,有读者问:
如果是多张工作簿、每个工作簿中又有多个工作表,且表头都不一样,那要如何批量合并呢?
多个工作簿:
每个工作簿中有多个工作表,表头不一样:
首先需要将待合并的工作簿放置于同一个文件夹内,支持Excel和WPS文件的混合汇总。
接着运行VBA代码块,选择刚才的文件夹,等待程序运行数秒,完成了表格的合并。
这里会将工作簿中涉及到的列全部展示,相同列内容合并到同一列,同时会在A列展示来源的工作簿,B列展示来源的工作表,方便数据核对。
工具表已放入专栏库,需要的小伙伴自行下载,文件编号【12】
你也可以直接复制下面的代码块,到Excel中去,运行即可完成汇总。
如何运行宏代码请参考专栏首篇文章。
----------------------------------------------------------分隔线------------------------------------------------------
Sub 合并多工作簿不同表头的所有工作表()
On Error Resume Next
Set d = CreateObject("scripting.dictionary")
Set file = Application.FileDialog(msoFileDialogFolderPicker)
With file
.Filters.Clear
.Title = "请选择文件夹"
{!-- PGC_COLUMN --}If .Show Then
MyPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
Dim Path As String, Wb As Workbook, Sht As Worksheet, Names, Restrg, datas
Application.ScreenUpdating = False
Application.DisplayAlerts = False
a = 0
b = 2
i = 2
j = 1
MyName = Dir(MyPath & "" & "*.xls*")
Do While MyName ""
Set Wb = Workbooks.Open(MyPath & "" & MyName)
booknum = booknum 1
For Each Sht In Wb.Worksheets
Set datas = Sht.UsedRange
If IsEmpty(datas) = False Then
Shtrows = Sht.Range("A" & Rows.Count).End(xlUp).Row - 1
If IsArray(datas) Then
datas = datas.Value
a = a 1
ReDim Restrg(1 To UBound(datas), 1 To i)
For j = 1 To UBound(datas, 2)
Cloumns = datas(1, j)
If Not d.exists(Cloumns) Then
i = i 1
If i > UBound(Restrg, 2) Then
ReDim Preserve Restrg(1 To UBound(Restrg), 1 To i)
End If
d(Cloumns) = i
End If
y = d(Cloumns)
For x = 2 To UBound(datas)
Restrg(x - 1, y) = datas(x, j)
Next
Next
For x = 2 To UBound(datas)
Restrg(x - 1, 1) = Wb.Name
Restrg(x - 1, 2) = Sht.Name
Next
ThisWorkbook.Sheets("Sheet1").Cells(b, 1).Resize(UBound(Restrg), UBound(Restrg, 2)) = Restrg
b = b Shtrows
End If
End If
Next
Wb.Close False
MyName = Dir
Loop
Sheet1.Range("a1:b1") = Array("来自工作簿", "来自工作表")
Sheet1.Range("c1").Resize(1, i - 2) = d.keys
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
怎样在WPS中把多个表格合并到一张列顺序不同的总表中
上周给一家企业汪扰掘培训WPS表格课程的时候,学员小E咨询道:“有什么快捷的方法可以把多个结构相同的表格,比如不同分公司的工资表合并,并匹配到一张列顺序不同的总表中。在分公司的表中顺序是员工编号、姓名、部门、职务……,而在提交给总公司的总表中的顺序是员工编号、部门、职务……。”我们先拆解一下小E的需要:
第一,要将结构相同的多工作簿合并到一张工作表。
第二,在总表中要根据一个关键字,比如员工编号查询在分公司表中相关的列数据。
接下来我们依次来看一下在WPS表格中要如何实现这两个需求。
如果在EXCEL中要实现多工作簿合并,需要使用POWER QUERY建立查询。而在WPS表格中,只需要点击“数据”选项卡中的“合并表格”功能即可。
在弹出来的对话框中,点击“添加文件”,选择多个结构相同的工资表文件所在的文件夹,把文件全部选中添加进来。
如果表格顶部有多层级表头,可以在底部选择数据是从第几行开始合并的。
如果只是返回关键词匹配的一列数据,我们用VLOOKUP一个函数即可,但现在要返回的是多列数据,就需要结合MATCH函数,我们先来看一下这两个函数的语法。
纵向查询:VLOOKUP(查询值,数据源表,结果在数据源的第几列,0/1)
最后一个参数0为精确查询,1为区间查询。
查询位置:MATCH(查询值,包含查询值的一行或一列,0/1)
最后一个参数的作用和VLOOKUP相同。
把唯一识别不同员工信息的员工编号列复制到总表中,之后在B2插入VLOOKUP函数。
第1个参数选择左侧的A2单元格,因为公式稍后会复制到右侧和底部,所以我们需要锁定A列,确保公式往右侧复制的时候,列号是不动的,但往下复制的时候,行号是可变的,也就是$A1,$出现在字母的前面代表锁列,出现在数字的前面代表锁行。
第2个参数就选择刚刚合并的工资表的所有列,把这个地址整个锁定起来。
第3个参数中嵌套match函数,match的第1个参数选择B1单元格,也就是姓名,锁定行号不锁列号,代表往右复制列号可变,但往下复制行号是固定的。困核第2个参数选择工作表的第1行,表示在这一行中查询“姓名”两个字的位置,最后1个参数是精确查询的0。
VLOOKUP函数的最后1个参数也是代表精确查询的0。
把公式往右和往下复制,所有数据都查询出来了李胡,如果在顶部新增加其他列,只要把公式复制过去,照样可以带出来。
这就是在WPS中把多个表格合并到一张列顺序不同的总表中的方法,你学会了吗?
EXCEL如何将两个或多个工作表合并成一个工作表
EXCEL如何将两个或多个工作表合并成一个工作表 朋友经常会遇到这样的问题,两个工作簿中有多个工作表,如何这两个工作簿合并成一个工作簿呢?
:jingyan.baidu./article/624e7459afacef34e8ba5ab6.
=====530409168======
用公式应该可以办到,把多个工作表的内容合并到一个工作表
1、有二个工作簿,每一个工作簿中都有若干个工作表,在做合并之前,我们要将这两个工作表打开。
2、在其中一个工作簿选择所有的工作表,方法是先选择第一个工作表,按住shift键,然后点最后一个工作表,这样就可以快速全部选中
3、当然,你也可以右击任意一工作表,在弹出的菜单中选择“选定全部工作表”选择所有的工作表
4、右击工作表标签,在弹出的菜单中选择“移动或复制工作表”在第一个下拉框中选择另一个要合并的工作簿。
5、这样就可以快速将当前工作簿的所有工作表合并到另外一个工作簿了
如何将一个 Excel 工作簿中的多个工作表合并成一唤顷滑个工作表
1,最笨的办法,就是复制-粘贴,
2,用VBA,
3,具体的,发附件,加说明
如何快速合并单个excel表中的多个sheet的工作页_百度经验 :jingyan.baidu./article/19020a0ad8080d529d28422a.
一简单的复制粘贴;
二用等于号引用;
三是用统计函数计算出几个表格的和腊汇总数据。
看你需要哪个。
EXCEL如何将两个或多个工作表合并成一个工作表_百度经验 :jingyan.baidu./article/624e7459afacef34e8ba5ab6.
建议使用vba来实现
具体看实现规则
如果是简单的合并
可以考虑使用公式看看吧
总之是看具体需求,建议进一步明确下
方法/步骤
如图:有二个工作簿,每一个工作簿中都有若干个工作表,在做合并之前,我们要将这两个工作表打开。
在其中一个工作簿选择所有的工作表,方法是先选择第一个工作表,按住shift键,然后点最后一个工作表,这样就可以快速全部选中
当然,你也可以右击任意一工作表乎竖,在弹出的菜单中选择“选定全部工作表”选择所有的工作表。
右击工作表标签,在弹出的菜单中选择“移动或复制工作表”在第一个下拉框中选择另一个要合并的工作簿。
5
这样就可以快速将当前工作簿的所有工作表合并到另外一个工作簿了。
6
这里需要注意的是如果两个工作簿,有相同名字的工作簿的话,系统自动用(2)来命名。