将多个sheet的列数据复制到同一列中的一个sheet,不覆盖

Copy column data from multiple sheets to one sheet in the same column, no overwriting

我有三个数据摘录:

我创建了一个 Excel 工作簿,该工作簿在三个单独的选项卡中包含此数据。每个选项卡有超过 50 列。

我想做的是创建一个 'master' 选项卡,将这三个选项卡中的每一个的三列数据复制到一个合并的工作中sheet,即列:

我知道如何使用 VBA 将整个列从一个 sheet 复制到另一个,我只是不知道如何将另一列的数据复制到 '主选项卡,即不覆盖数据,例如:

我可以将帐户代码数据从 'Invoices' 选项卡复制到 'master' 选项卡,但是当我从 'CreditNotes' 选项卡复制帐户代码数据时,它会覆盖我已经从“发票”选项卡中复制的内容,而我希望将其复制到下方。

对不起,文字墙,我只是想提供尽可能多的信息!

我的代码是:

Sub Consolidation()

Sheets("Invoices").Columns(11).Copy Destination:=Sheets("master").Columns(1)
Sheets("CreditNotes").Columns(11).Copy Destination:=Sheets("master").Columns(1)
Sheets("Journals").Columns(11).Copy Destination:=Sheets("master").Columns(1)

End Sub

合并列

Sub ConsolidateColumn()

    ' Source Worksheet List
    Const cSheets As String = "Invoices,CreditNotes,Journals"
    Const cTarget As String = "Sheet1"  ' Target Worksheet Name
    Const cFur As Long = 2              ' Source First Used Row
    Const cColS As Variant = 11         ' Source Column Letter/Number ("K")
    Const cColT As Variant = 1          ' Target Column Letter/Number ("A")

    Dim rng As Range      ' Source Column Range (in current Source Worksheet)
    Dim vntW As Variant   ' Worksheet Array
    Dim LurS As Long      ' Source Last Used Row Number
    Dim FerT As Long      ' Target First Empty Row Number
    Dim i As Long         ' Worksheet Array Element Counter

    ' Split Source Worksheet List to Worksheet Array.
    vntW = Split(cSheets, ",")

    ' In This Workbook (The Workbook Containing This Code)
    With ThisWorkbook.Worksheets(cTarget)
        ' Loop through elements of Worksheet Array.
        For i = 0 To UBound(vntW)
            ' Calculate Target First Empty Row Number.
            FerT = .Cells(.Rows.Count, cColT).End(xlUp).Row + 1
            ' In Current Source Worksheet
            With ThisWorkbook.Worksheets(Trim(vntW(i)))
                ' Calculate Source Last Used Row Number.
                LurS = .Cells(.Rows.Count, cColS).End(xlUp).Row
                ' Calculate Source Column Range.
                ' Create a reference to Source Column Range.
                Set rng = .Cells(cFur, cColS).Resize(LurS - cFur + 1)
            End With
            ' Calculate Target Column Range.
            ' Copy values from current Source Column Range to Target Column
            ' Range.
            .Cells(FerT, cColT).Resize(rng.Rows.Count) = rng.Value
        Next
    End With
 End Sub