将多个工作表合并/合并到一个主表中有时我们希望将多张工作表合并为一张工作表,以便我们可以轻松地分析数据并将其转变为有用的信息。本文将告诉您如何使用VBA将多个工作表合并为一个工作表。

示例:

008

在这里,我从服务器获取了一些数据,这些数据将数据返回到不同的工作表中。我又添加了一张工作表,并将其命名为“ Master”。其他工作表名称无关紧要。

现在运行此宏。

Sub Merge_Sheets()

Dim startRow, startCol, lastRow, lastCol As Long

Dim headers As Range

'Set Master sheet for consolidation

Set mtr = Worksheets("Master")

Set wb = ThisWorkbook

'Get Headers

Set headers = Application.InputBox("Select the Headers", Type:=8)

'Copy Headers into master

headers.Copy mtr.Range("A1")

startRow = headers.Row + 1

startCol = headers.Column

Debug.Print startRow, startCol

'loop through all sheets

For Each ws In wb.Worksheets

'except the master sheet from looping

If ws.Name <> "Master" Then

ws.Activate

lastRow = Cells(Rows.Count, startCol).End(xlUp).Row

lastCol = Cells(startRow, Columns.Count).End(xlToLeft).Column

'get data from each worksheet and copy it into Master sheet

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _

mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

End If

Next ws

Worksheets("Master").Activate

End Sub

如何使用此VBA宏合并工作表?

。插入新的工作表,然后在工作簿中将其命名为“ Master”。如果需要,可以稍后重命名。

。在VBA编辑器中插入一个模块,然后复制上面的VBA代码。

。运行宏。

。系统将要求您选择标题。选择标题,然后单击确定。

完成了。所有工作表都合并在母版中。

0012

如何运作?

我假设您了解VBA中对象和变量创建的基础。在第一部分中,我们创建了操作中将需要的对象和变量。

好吧,我在vba代码中使用注释已经解释了大多数事情。

让我们看一下此vba代码的主要部分。

For Each ws In wb.Worksheets

'except the master sheet from looping

If ws.Name <> "Master" Then

ws.Activate

lastRow = Cells(Rows.Count, startCol).End(xlUp).Row

lastCol = Cells(startRow, Columns.Count).End(xlToLeft).Column

'get data from each worksheet and copy it into Master sheet

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _

mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

End If

Next ws

在较早的文章中,我们学习了如何循环工作表以及如何使用vba获取最后一行和最后一列。

在这里,我们使用for循环遍历主工作簿中的每个工作表。

对于wb.Worksheets中的每个ws然后,我们将“主”表排除在循环之外,因为我们将在该表中合并数据。

然后我们得到最后一行和最后一列的编号。

现在,下一行非常重要。我们已经在一行中完成了多项操作。

Range(Cells(startRow,startCol),Cells(lastRow,lastCol))。Copy _ mtr.Range(“ A”&mtr.Cells(Rows.Count,1).End(xlUp).Row + 1)

首先,我们使用startRow,startCol,lastRow和lastCol形成范围。

Range(Cells(startRow, startCol), Cells(lastRow, lastCol))

We have copied it using copy method of range.

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy

We pasted it directly into first blank cell after last non blank cell in column A of master sheet (mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1).

Range(Cells(startRow, startCol), Cells(lastRow, lastCol)).Copy _

mtr.Range("A" & mtr.Cells(Rows.Count, 1).End(xlUp).Row + 1)

此循环为所有工作表运行,并将每个工作表数据复制到主表中。

最后,在宏的最后,我们激活母版以查看输出。

好的,这就是您可以合并工作簿中的每个工作表的方式。如果您有关于此VBA代码的任何查询或以下注释部分中的任何excel主题,请告诉我。

下载文件:

`link:/wp-content-uploads-2019-11-Consolidate_Merge-multiple-worksheets-to-one-master-sheet-using-VBA.xls [__使用VBA将多个工作表合并为一个主表]

相关文章:

如何在工作表中循环

如何使用vba

获得最后一行和最后一列// [文件工作簿和工作表在vba /删除工作表中-没有确认提示-使用-vba-in-microsoft-excel.html [在Microsoft Excel中使用VBA删除没有确认提示的工作表]]

在Microsoft Excel 2016中使用VBA添加和保存新工作簿 ||||链接:/ menus-toolbars-status-bar-in-vba-display-message-on-the-statusbar-message-on-the-statusbar-using-vba-in-microsoft-excel [在Excel VBA状态栏上显示消息] |||| link:/ general-topics-in-vba-off-warning-messages-using-vba-in-microsoft-excel [在Microsoft Excel 2016中使用VBA关闭警告消息]

热门文章:

link:/ vlookup-functions的公式和函数介绍[Excel中的VLOOKUP函数]

链接:/ tips-countif-in-microsoft-excel [Excel 2016中的COUNTIF]`