find匹配范围并replace相邻的单元格值 – Excel VBA

我有两个数据集,我需要比较 – 一个包含我的主数据集,第二个数据集中的一个variables的校正值。

例如,

数据集:

FirstName1 | LastName1 | UserID1 | etc1 | ETC1
FirstName2 | LastName2 | UserID2 | etc2 | ETC2
FirstName3 | LastName3 | UserID3 | etc3 | etc3

等等。

但是,用户标识列不正确,需要使用单独的工作表中的值进行更新:

FirstName1 | LastName1 | 已更正的用户 ID1
FirstName2 | LastName2 | 更正了 UserID2
FirstName3 | LastName3 | 已更正的用户 ID3

等等。

我的目标是find使用前两个单元格作为条件的匹配,然后如果find匹配,请相应地replace第一个表格中的用户ID。 不幸的是,原始数据集比~30K行更小(〜3K行),所以更简单的解决scheme还没有被确定。

我的VBA技能很差(典型的,我知道),而且就我而言,

Sub FindReplace() Dim lr As Long, i As Long With Sheets("Data Set") lr = .Range("A:B").End(xlUp).Row For i = lr To 1 If IsNumeric(Application.Match(.Range("A1:B1").Value, Sheets("Values").Range("A1:B1").Value, 0)) Then .Cells("C1").Value = Sheets("Values").Cells("C1") End If Next i End With End Sub 

然而,这并没有做任何事情,我有点难倒(和我的头)。 理想的情况下,我会感激一些额外的解释,为什么上述不起作用,使我可以从我的错误中学习,但任何帮助都是无限的赞赏。

非常感谢您的帮助!

+ DS

正如亚历克斯所说,你不需要VBA,一个VLookup将工作得很好。 您可以将两个条件连接到两张表中的第三列,然后按照该值查找。

只要确保你的连接列在你想要检索的ID的左边。

FirstName1LastName1 | FirstName1 | LastName1 | CorrectedUserID1 FirstName2LastName2 | FirstName2 | LastName2 | CorrectedUserID2 FirstName3LastName3 | FirstName3 | LastName3 | CorrectedUserID3

一旦更新了ID,用复制/粘贴特殊值对公式进行硬编码,然后删除连接的列。

没有进行build设和testing,我可以看到你有一个错字。

 Sub FindReplace() Dim lr As Long, i As Long With Sheets("Data Set") lr = .Range("A:B").End(xlUp).Row **For i = lr To 1** If IsNumeric(Application.Match(.Range("A1:B1").Value, Sheets("Values").Range("A1:B1").Value, 0)) Then .Cells("C1").Value = Sheets("Values").Cells("C1") Next i End With End Sub 

应该

  For i = 1 To lr