有时,从同一列的多个工作表复制数据已成为一项常规工作。使用自动化可以避免此步骤。如果要在将每张工作表的一列中的数据复制到一张工作表后制作一张合并工作表,则应阅读此文章。

在本文中,我们将创建一个宏来复制特定列中的数据并将其粘贴到新表中。

此示例的原始数据由Excel工作簿形式的员工数据组成,其中包含三页以及员工的部门,个人和联系方式。

ArrowRaw

为了将数据从不同的工作表复制到新工作表中,我们创建了一个宏“ CopyColumns”。单击“主”页面上的“运行宏”按钮可以运行该宏。

ArrowMain

“ CopyColumns”宏将在“主”工作表之后插入一个名为“主”的新工作表。 “主”表将包含所有表的合并数据。

ArrowOutput

代码说明

Worksheets.Add(after:= Worksheets(“ Main”))

上面的代码用于在“主”工作表之后插入新的工作表。

如果Source.Name <>“ Master”和Source.Name <>“ Main”,则结束如果上述代码用于限制“ Master”和“ Main”表中数据的复制,则结束。

Source.UsedRange.Copy Destination.Columns(Last)

上面的代码用于将数据从源工作表复制到目标工作表。

对于ThisWorkbook.Worksheets中的每个源如果Source.Name =“ Master”,则MsgBox“ Master表已经存在”

如果下一个上述代码,退出子结束,用于检查工作簿中是否已经存在“母版”工作表。如果工作簿中已存在“母版”表,宏将停止执行。

请遵循以下代码

Option Explicit

Sub CopyColumns()

Dim Source As Worksheet

Dim Destination As Worksheet

Dim Last As Long

Application.ScreenUpdating = False

'Checking whether "Master" sheet already exists in the workbook

For Each Source In ThisWorkbook.Worksheets

If Source.Name = "Master" Then

MsgBox "Master sheet already exist"

Exit Sub

End If

Next

'Inserting new worksheets in the workbook

Set Destination = Worksheets.Add(after:=Worksheets("Main"))

'Renaming the worksheet

Destination.Name = "Master"

'Looping through the worksheets in the workbook

For Each Source In ThisWorkbook.Worksheets





If Source.Name <> "Master" And Source.Name <> "Main" Then



'Finding the last column from the destination sheet

Last = Destination.Range("A1").SpecialCells(xlCellTypeLastCell).Column



If Last = 1 Then

'Pasting the data in the destination sheet

Source.UsedRange.Copy Destination.Columns(Last)

Else

Source.UsedRange.Copy Destination.Columns(Last + 1)

End If

End If

Next

Columns.AutoFit

Application.ScreenUpdating = True

End Sub

如果您喜欢此博客,请在Facebook和Facebook上与您的朋友分享。

我们很希望收到您的来信,请让我们知道我们如何才能改善我们的工作并使您的工作更好。写信给我们[email protected]