从各片材一个或多个列复制到在Microsoft Excel中使用VBA一个片
有时,从同一列的多个工作表复制数据已成为一项常规工作。使用自动化可以避免此步骤。如果要在将每张工作表的一列中的数据复制到一张工作表后制作一张合并工作表,则应阅读此文章。
在本文中,我们将创建一个宏来复制特定列中的数据并将其粘贴到新表中。
此示例的原始数据由Excel工作簿形式的员工数据组成,其中包含三页以及员工的部门,个人和联系方式。
为了将数据从不同的工作表复制到新工作表中,我们创建了一个宏“ CopyColumns”。单击“主”页面上的“运行宏”按钮可以运行该宏。
“ CopyColumns”宏将在“主”工作表之后插入一个名为“主”的新工作表。 “主”表将包含所有表的合并数据。
代码说明
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]