【问题标题】:Compare 2 columns in 2 workbooks, copy matched row if match is found比较 2 个工作簿中的 2 列,如果找到匹配则复制匹配的行
【发布时间】:2015-02-24 03:55:12
【问题描述】:

我有两个工作簿(或 2 张工作表):工作簿 A 和工作簿 B。 我想比较: 工作簿 A WITH 中的 B 列和 C 列 工作簿 B 中的 A 列和 B 列 如果找到匹配项 THEN 我需要从工作簿 B 复制 MATCHED 行并将其粘贴到工作簿 A 上的 MATCHED 行。 换句话说:我需要将工作簿 B 的匹配行的 C 列和 D 列的单元格值复制到工作簿 A 匹配行的 D 列和 E 列的单元格中。

到目前为止我所拥有的只有比较了我希望是正确的两列。 下面的代码适用于 2 个工作表,而不是两个工作簿:

Sub compareNcopy()

Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet

Set sh1 = Sheets("Sheet1"): Set sh2 = Sheets(2): Set sh3 = Sheets(3)


Dim i As Long, j As Long,
Dim lr1 As Long, lr2 As Long
Dim nxtRow As Long
Dim rng1 As Range, rng2 As Range, rng3 As Range

lr1 = sh1.Range("A" & Rows.Count).End(xlUp).Row
lr2 = sh2.Range("A" & Rows.Count).End(xlUp).Row

For i = 1 To lr1
    Set rng1 = sh1.Range("A" & i)

    For j = 1 To lr2
        Set rng2 = sh2.Range("A" & j)

        If StrComp(CStr(rng1.Value), CStr(rng2.Value), vbTextCompare) = 0 Then

            If rng1.Offset(0, 1).Value = rng2.Offset(0, 1).Value Then

            End If

        End If
        Set rng2 = Nothing
    Next j
    Set rng1 = Nothing
Next i
End Sub

我们将不胜感激。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在两张纸(甚至两本书)之间进行复制与复制到同一张纸(或书)中的另一个单元格几乎相同,您只需指定哪张纸(或书)。你想要做的事情是这样的:

    sh2.Cells(j,3).Resize(1,2).Copy Destination:=sh1.Cells(i,3).Resize(1,2)
    

    这是为了如果您要复制的数据在sh2 中找到。如果反之,则切换sh2sh1,以及ji

    如果要在工作簿之间复制,则需要在 Sheets(sh2). 说明符前添加 Workbooks(wb1).wb1 是工作簿变量。

    编辑:由于sh2 本质上是Sheets(2),我之前显示的是Sheets(Sheets(2)),这没有任何意义,这就是错误弹出的原因。我很抱歉。不要使用Sheets(sh2),只需使用sh2sh1 也是如此。我已经修复了上面的代码以反映这一点。

    【讨论】:

    • 感谢您的回复。我添加了您建议的行,但它给了我一个“不匹配运行时错误:13”关于为什么的任何想法?我更改了代码以将列比较为: Sheets(sh2).Cells(j, 3).Resize(1, 2).Copy Destination:=Sheets(sh1).Cells(i, 4).Resize(1, 2 )
    • @user3720702 现在已修复,对此感到抱歉。
    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2021-12-19
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多