从工作表复制范围覆盖数据

我正在写一个macros以将工作簿中多个工作表(在同一个工作簿中)的一个范围复制到新工作表中的一个列。 我想将第一张纸张的范围(“C2:C12021”)中的值复制到新纸张的A列中,然后将值范围(“C2:C12021”)从第二张纸张新的表格等等。

我目前正在使用下面的代码,但macros不断复制范围从每个工作表,我试图结合到我想要结合他们的工作表的同一列。

因此,只有最后一张纸张的范围出现在组合纸张上,我认为这是从其他纸张复制的范围已被简单地覆盖,因为macros循环通过纸张。

Sub CombineWorksheets() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long Dim CopyRng As Range With Application .ScreenUpdating = False .EnableEvents = False End With Application.DisplayAlerts = False On Error Resume Next ActiveWorkbook.Worksheets("MergeSheet").Delete On Error GoTo 0 Application.DisplayAlerts = True 'Add a worksheet named "MergeSheet" Set DestSh = ActiveWorkbook.Worksheets.Add DestSh.Name = "MergeSheet" For Each sh In ActiveWorkbook.Worksheets If sh.Name <> DestSh.Name Then 'Copy target range Set CopyRng = sh.Range("C2:C12021") CopyRng.Copy With DestSh.Cells(Last + 1, "A") .PasteSpecial xlPasteValues .PasteSpecial xlPasteFormats Application.CutCopyMode = False End With End If Next End Sub 

你可以引用单元格的水平值为整数,即

 .Cells(Vertical As Integer, Horizontal As Integer) 

所以在循环的开始,有一个计数器variables,并在水平值中使用。

 Dim count As Integer For Each sh In ActiveWorkbook.Worksheets If sh.Name <> DestSh.Name Then count = count + 1 'Copy target range Set CopyRng = sh.Range("C2:C12021") CopyRng.Copy With DestSh.Cells(last + 1, count) .PasteSpecial xlPasteValues .PasteSpecial xlPasteFormats Application.CutCopyMode = False End With End If Next