我有3个excel文件,每个包含1个工作表,这3个工作表具有相同的列标题名称。
文件A有一个名为“AA”的工作表,列标题名称为“IC”,“名称”。 文件B有一个名为“BB”的工作表,列标题名称为“IC”,“名称”。 文件C有一个名为“CC”的工作表,列标题名称为“IC”,“名称”。 。 。
现在我想将文件A,B,C中工作表“AA”,“BB”和“CC”中“IC”,“Name”下的值组合成文件中的一个工作表。 / p>
文件ZZ的工作表名为“zz”,列标题名称为“IC”,“名称”包含文件A,B和C中的所有行值...
有人可以分享怎么做吗?
谢谢:)
答案 0 :(得分:0)
你能不能简单地使用复制和粘贴?将文件A的内容复制到空工作簿中,文件Z.然后复制文件B中的所有数据行(不包括标题)并粘贴到文件Z中的现有数据下面。对文件C重复。
答案 1 :(得分:0)
在不知道你的工作簿(你称之为文件)使用什么约定的情况下,我已经创建了一个宏,可以按照你的要求进行,但会做出一些假设。这完全按照您的要求进行,但可能需要根据您的文件进行一些更改。
<强>假设:强>
IC
和Name
分别位于单元格A1
和B1
中Parent Workbook
启动,假设是将保存最终结果的工作簿<强>代码强>
Public Sub CombineAllOpenWorkbooks()
Dim parentWb As Workbook, childWb As Workbook
Dim destinationWs As Worksheet, sourceWs As Worksheet
Dim highestRowCount As Integer
Dim firstColumnRowCount As Integer
Dim secondColumnRowCount As Integer
Application.ScreenUpdating = False
'this holds reference to the parent workbook, which is where all the values go
Set parentWb = Application.Workbooks(ThisWorkbook.Name)
Set destinationWs = parentWb.Sheets(1)
'for each workbook open that isn't the aprent workbook, find the last cell,
'select it, copy its values, then paste them at the end of the parent workbooks
'current values
For Each childWb In Application.Workbooks
If childWb.Name <> parentWb.Name Then
Set sourceWs = childWb.Sheets(1)
firstColumnRowCount = sourceWs.Cells(Rows.Count, 1).End(xlUp).Row
secondColumnRowCount = sourceWs.Cells(Rows.Count, 2).End(xlUp).Row
highestRowCount = firstColumnRowCount
If firstColumnRowCount < secondColumnRowCount Then
highestRowCount = secondColumnRowCount
End If
'copy from below the 'IC/Name' headers to the last cell that contains values
sourceWs.Range(sourceWs.Cells(2, 1), sourceWs.Cells(highestRowCount, 2)).Copy
firstColumnRowCount = destinationWs.Cells(Rows.Count, 1).End(xlUp).Row
secondColumnRowCount = destinationWs.Cells(Rows.Count, 2).End(xlUp).Row
highestRowCount = firstColumnRowCount
If firstColumnRowCount < secondColumnRowCount Then
highestRowCount = secondColumnRowCount
End If
'paste the previously copied values to the end of the parent workbokos values
destinationWs.Range("A" & highestRowCount + 1).PasteSpecial Paste:=xlPasteValues
End If
Next childWb
Application.ScreenUpdating = True
End Sub
To add this VBA to your workbook,您必须打开父母工作簿的Developer Tab
,从菜单中选择Visual Basic
,然后从左侧菜单中打开Sheet 1
,然后将代码粘贴在那里。
以下是我在测试期间使用的工作簿的一些图像(ParentWorkbook,FileA,FileB):
运行宏之前的所有三个工作簿:
运行宏后的父工作簿:
请注意,此代码已快速创建,并且已完成有限的测试。它当然可以清理,并且可以删除代码中的冗余;它的目的是让你开始。如果您对任何部分有任何疑问,我乐意解释。
答案 2 :(得分:0)
我尝试过这个软件并且有效:http://bulkfilemerger.com/index1