gpt4 book ai didi

vba - 比较 2 个工作簿中的 2 列,如果找到匹配则复制匹配的行

转载 作者:行者123 更新时间:2023-12-04 20:43:56 26 4
gpt4 key购买 nike

我有两个工作簿(或 2 张工作表):工作簿 A 和工作簿 B。
我想比较:
工作簿 A 中的 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

帮助将不胜感激。

最佳答案

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

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

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

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

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

关于vba - 比较 2 个工作簿中的 2 列,如果找到匹配则复制匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24112014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com