将多个具有相同标题的Excel工作表与唯一ID组合在一起

时间:2018-07-06 14:48:31

标签: excel vba excel-vba

我无法将多张纸(可能超过2张)合为一体。 基本上,我的工作表具有相同的列,我想要将它们合并。

示例:这只是一种情况,但是我们可以为两张以上的纸提供动态代码吗,唯一ID可以随机播放。但是基本上,这就是我要实现的(输出),将不同工作表上的数据合并为一个。

Sample Scenario

我尝试使用ADO并为UNION和INNER JOIN进行查询(因为我认为它将起作用),但是没有运气。 希望任何人都能帮助我。

2 个答案:

答案 0 :(得分:0)

尝试一下。

Sub test()
    Dim vDB, Temp
    Dim Ws(1 To 3) As Worksheet
    Dim i As Long, j As Integer

    Set Ws(1) = Sheets("Sheet1")
    Set Ws(2) = Sheets("Sheet2")
    Set Ws(3) = Sheets("Output")

    vDB = Ws(1).Range("a1").CurrentRegion
    Temp = Ws(2).Range("a1").CurrentRegion

    For i = 2 To UBound(vDB, 1)
        For j = 2 To UBound(vDB, 2)
            If Temp(i, j) <> "" Then
                vDB(i, j) = Temp(i, j)
            End If
        Next j
    Next i
    Ws(3).Range("a1").Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB
End Sub

答案 1 :(得分:-1)

Sub SheetCode()
    For Each sh In Sheets
        If sh.Name <> Name Then
            For Each cl In sh.Range("B2:D4")
                If cl.Value <> "" Then Range(cl.Address).Value = cl.Value
            Next
        End If
    Next
End Sub

此代码假定所有工作表中的表格完全相同,即页眉和唯一ID的顺序相同。

在要收集数据的工作表中粘贴代码。