查找匹配范围&;替换相邻单元格值--Excel VBA

查找匹配范围&;替换相邻单元格值--Excel VBA,vba,excel,replace,Vba,Excel,Replace,我需要比较两个数据集——一个包含主数据集,另一个包含该数据集中一个变量的修正值 比如说, 数据集: FirstName1 | LastName1 | UserID1 | etc1 | etc1 FirstName2 | LastName2 | UserID2 | etc2 | etc2 FirstName3 | LastName3 | UserID3 | etc3 | etc3 然而,这没什么用,我有点不知所措。理想情况下,我希望能得到一些额外的解释,解释一下为什么上面的方法不起作用,这

我需要比较两个数据集——一个包含主数据集,另一个包含该数据集中一个变量的修正值

比如说,

数据集:

FirstName1 | LastName1 | UserID1 | etc1 | etc1 FirstName2 | LastName2 | UserID2 | etc2 | etc2 FirstName3 | LastName3 | UserID3 | etc3 | etc3 然而,这没什么用,我有点不知所措。理想情况下,我希望能得到一些额外的解释,解释一下为什么上面的方法不起作用,这样我就可以从错误中吸取教训,但任何帮助都是无限感激的

非常感谢您的帮助


+ds

如果不进行构建和测试,我可以看到您有一个输入错误

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

不需要进入构建和测试,我就可以看到您有一个输入错误

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

不需要进入构建和测试,我就可以看到您有一个输入错误

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

不需要进入构建和测试,我就可以看到您有一个输入错误

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

正如Alex所说,你不需要VBA,VLookup可以很好地工作。您可以将两个条件连接到两个工作表上的第三列,然后根据该值进行vlookup

只需确保连接的列位于要检索的ID的左侧

FirstName1LastName1 |FirstName1 | LastName1 | CorrectedUserID1 FirstName2LastName2 |FirstName2 | LastName2 | CorrectedUserID2 FirstName3LastName3 |FirstName3 | LastName3 | CorrectedUserID3 FirstName1LastName1 | FirstName1 | LastName1 |已更正1 FirstName2LastName2 | FirstName2 | LastName2 |已更正2 FirstName3 LastName3 | FirstName3 | LastName3 |已更正3
更新ID后,使用copy/pastespecial:values对公式进行硬编码,并删除连接的列。

正如Alex所述,您不需要VBA,VLookup可以正常工作。您可以将两个条件连接到两个工作表上的第三列,然后根据该值进行vlookup

只需确保连接的列位于要检索的ID的左侧

FirstName1LastName1 |FirstName1 | LastName1 | CorrectedUserID1 FirstName2LastName2 |FirstName2 | LastName2 | CorrectedUserID2 FirstName3LastName3 |FirstName3 | LastName3 | CorrectedUserID3 FirstName1LastName1 | FirstName1 | LastName1 |已更正1 FirstName2LastName2 | FirstName2 | LastName2 |已更正2 FirstName3 LastName3 | FirstName3 | LastName3 |已更正3
更新ID后,使用copy/pastespecial:values对公式进行硬编码,并删除连接的列。

正如Alex所述,您不需要VBA,VLookup可以正常工作。您可以将两个条件连接到两个工作表上的第三列,然后根据该值进行vlookup

只需确保连接的列位于要检索的ID的左侧

FirstName1LastName1 |FirstName1 | LastName1 | CorrectedUserID1 FirstName2LastName2 |FirstName2 | LastName2 | CorrectedUserID2 FirstName3LastName3 |FirstName3 | LastName3 | CorrectedUserID3 FirstName1LastName1 | FirstName1 | LastName1 |已更正1 FirstName2LastName2 | FirstName2 | LastName2 |已更正2 FirstName3 LastName3 | FirstName3 | LastName3 |已更正3
更新ID后,使用copy/pastespecial:values对公式进行硬编码,并删除连接的列。

正如Alex所述,您不需要VBA,VLookup可以正常工作。您可以将两个条件连接到两个工作表上的第三列,然后根据该值进行vlookup

只需确保连接的列位于要检索的ID的左侧

FirstName1LastName1 |FirstName1 | LastName1 | CorrectedUserID1 FirstName2LastName2 |FirstName2 | LastName2 | CorrectedUserID2 FirstName3LastName3 |FirstName3 | LastName3 | CorrectedUserID3 FirstName1LastName1 | FirstName1 | LastName1 |已更正1 FirstName2LastName2 | FirstName2 | LastName2 |已更正2 FirstName3 LastName3 | FirstName3 | LastName3 |已更正3
更新ID后,使用copy/pastespecial:values对公式进行硬编码,并删除连接的列。

是否尝试使用vlookup()函数?您是否尝试过使用vlookup()函数?您是否尝试过使用vlookup()函数?您是否尝试过使用vlookup()函数?谢谢你的提示。我避免花太多时间在这个功能上,因为我认为它不适合我的目的。我在这里的目标是尽可能少地对数据进行操作,因为这可能会随着需要在其他数据集上重复,因此希望使用VBA而不是传统的公式w/连接等。我过去曾使用VBA创建连接/vlookup列。Excel为此进行了优化,它比循环的效率要高得多。当然这是你的特权,但没有理由你不能两者兼用。谢谢你的提示。我避免花太多时间在这个功能上,因为我认为它不适合我的目的。我在这里的目标是尽可能少地对数据进行操作,因为这可能会随着需要在其他数据集上重复,因此希望使用VBA而不是传统的公式w/连接等。我过去曾使用VBA创建连接/vlookup列。Excel为此进行了优化,它比循环的效率要高得多。当然这是你的特权,但没有理由你不能两者兼用。谢谢你的提示。我避免花太多时间在这个功能上,因为我认为它不适合我的目的。我在这里的目标是尽可能少地对数据进行操作,因为这可能会随着需要在其他数据集上重复,因此希望使用VBA而不是传统的公式w/连接等。我过去曾使用VBA创建连接/vlookup列。Excel为此进行了优化,它比循环的效率要高得多。当然这是你的特权,但没有理由你不能两者兼用。谢谢你的提示。我避免花太多时间在这个功能上,因为我认为它不适合我的目的。我在这里的目标是尽可能少地对数据进行操作,因为这可能会随着需要在其他数据集上重复,因此希望使用VBA而不是传统的公式w/连接等。我过去曾使用VBA创建连接/vlookup列。Excel为此进行了优化,它比循环的效率要高得多。当然这是你的特权,但没有理由你不能两者兼用。谢谢,PJ。我已经纠正了打字错误(以及另一个),但似乎没有错