根据标题复制Excel中的列

时间:2019-03-18 16:53:11

标签: excel vba

我想将一列从一个工作表(“ Data1”)复制到另一工作表(“ Calc”)。然后,如果该列标题与“ Data1”表中的列相同,则我想从另一表(“ Data2”)中复制另一列,并将其粘贴到第二列“ Calc”表中。

我想将其循环放置,以便将“ Data1”表中的所有列和“ Data2”表中的相应列复制到“ Calc”表中。

Data1表看起来像这样:

Data1

Data2工作表如下:

Data2

我希望Calc工作表看起来像这样:

Calc

我对VBA还是很陌生,因此感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这将清除Calc工作表,然后检查Data1中的列数,并仅在它们匹配时从Data1和Data2复制列。

Sub UpdateCalcSheet()

    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim ws3 As Worksheet

    Dim NumCols As Long
    Dim t As Long
    Dim i As Long

    Set ws1 = Sheets("Data1")
    Set ws2 = Sheets("Data2")
    Set ws3 = Sheets("Calc")

    ws3.Cells.ClearContents

    NumCols = ws1.Cells(1, Columns.Count).End(xlToLeft).Column
    t = 1

    For i = 1 To NumCols
        Set IsCol = ws2.Rows(1).Find(ws1.Cells(1, i))
        If Not IsCol Is Nothing Then
            ws1.Columns(i).Copy ws3.Columns(t)
            t = t + 1
            ws2.Columns(ws2.Rows(1).Find(ws1.Cells(1, i)).Column).Copy ws3.Columns(t)
            t = t + 1
        End If
    Next i

End Sub