【问题标题】:VLOOKUP to compare data in 2 different workbooks with VBAVLOOKUP 将 2 个不同工作簿中的数据与 VBA 进行比较
【发布时间】:2017-04-05 03:42:08
【问题描述】:

我对 VBA/Excel 有点陌生,所以我想知道是否有人会帮助我。

我的问题:
我有两个不同的工作簿,但在这些工作簿中,其中两列有共同的数据。于是想用VLOOKUP来比较两列,看看有没有共同的数据。

详情:
第一个工作簿:有 3 个不同的工作表,我只需要使用第 2 列中包含数据的工作表“项目”。

第二个工作簿:只有一张名为“数据”的工作表,并且在第 4 列中有数据。

因此,我的目标是比较 2 列。在 workbook1 中,数据列旁边有一个空列,因此,如果有匹配项,我想说“好的”。如果没有匹配则 ""。

我试过VLOOKUP,但真的无法理解。另外,这是为了工作。

【问题讨论】:

    标签: vba excel find vlookup


    【解决方案1】:

    你可以试试这个..

    假设您的第二个工作簿的名称是 Book2.xlsx,那么试试这个...

    在第一个工作簿上 在 C2 中

    =IF(ISNUMBER(MATCH(B2,'[Book2.xlsx]Data'!$D:$D,0)),"OK","")
    

    然后复制下来。

    如果您需要 VBA 解决方案,获得所需输出的一种方法如下... 以下代码假定 Book1.xlsm(将包含以下代码)和 Book2.xlsx 都保存在同一个文件夹中。 如果它们保存在不同的位置,请在以下代码行中更改 Book2.xlsx 的路径和名称。

    sourceFilePath = dwb.Path & "\"
    sourceFileName = "Book2.xlsx"
    

    代码:

    Sub CompareData()
    Dim swb As Workbook, dwb As Workbook
    Dim sws As Worksheet, dws As Worksheet
    Dim slr As Long, dlr As Long, i As Long
    Dim sourceFilePath As String, sourceFileName As String
    Dim x, y, z, dict
    Application.ScreenUpdating = False
    
    Set dwb = ThisWorkbook
    Set dws = dwb.Sheets("Items")
    dlr = dws.Cells(Rows.Count, 2).End(xlUp).Row
    x = dws.Range("B2:B" & dlr).Value
    ReDim z(1 To dlr)
    sourceFilePath = dwb.Path & "\"
    sourceFileName = "Book2.xlsx"
    
    Workbooks.Open sourceFilePath & sourceFileName
    
    Set swb = ActiveWorkbook
    Set sws = swb.Sheets("Data")
    slr = sws.Cells(Rows.Count, 4).End(xlUp).Row
    y = sws.Range("D2:D" & slr).Value
    
    Set dict = CreateObject("Scripting.Dictionary")
    
    For i = 1 To UBound(y, 1)
        dict.Item(y(i, 1)) = ""
    Next i
    swb.Close False
    
    For i = 1 To UBound(x, 1)
        If dict.exists(x(i, 1)) Then
            z(i) = "OK"
        Else
            z(i) = ""
        End If
    Next i
    dws.Range("C2").Resize(UBound(x, 1), 1).Value = Application.Transpose(z)
    Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • 嗨,我明白这一点,但我需要用 vba 代码而不是 excel 来做这件事,所以我为什么在挣扎。
    • 您有起始代码或分享您迄今为止尝试过的任何内容吗?如果是,您遇到了什么问题?
    • 我在我的解决方案中添加了一个代码,看看它是否能达到你想要达到的效果。
    • @sktnerr 谢谢你,工作完美。再次感谢我现在明白了
    • 不客气 Panscer!很高兴它奏效了。也不要忘记支持解决方案。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2023-03-13
    相关资源
    最近更新 更多