在Excel VBA中,如何比较两个范围,并将一个范围的偏移量复制到另一个范围的偏移量中?

一些谷歌search后,我使用下面:

Sub Find_Matches() Dim CompareRange As Variant, ToCompare As Variant, x As Variant, y As Variant Set CompareRange = Worksheets("names").Range("A1:A500") Set ToCompare = Worksheets("Main").Range("C1:C500") For Each x In ToCompare For Each y In CompareRange If x = y Then x.Offset(0, 2) = y.Offset(0, 1) Next y Next x End Sub 

工作表“main”列C包含A列和B列(名字和姓氏)串联的名称列表。 这会导致我的程序不能运行?

工作表“名称”列A包含人员名称,工作表“名称”列B包含要复制到E列中工作表“主要”的数据(如果匹配的话)。 我正在以正确的方式进行吗?

使用嵌套循环search匹配可能非常低效。 而是使用内置的.Find方法。 请参阅下面的代码示例,并让我们知道是否需要添加帮助。

 Sub Find_Matches() Dim compareRange As Range Dim toCompare As Range Dim rFound As Range Dim cel As Range Set compareRange = Worksheets("Names").Range("A1:A500") Set toCompare = Worksheets("Main").Range("C1:C500") Set rFound = Nothing For Each cel In toCompare Set rFound = compareRange.Find(cel) If Not rFound Is Nothing Then cel.Offset(, 2).Value = rFound.Offset(, 1) Set rFound = Nothing End If Next cel End Sub