Excel中的Vlookup VBA代码,不在正确的单元格中复制数据(在我的代码中只需要一个小修复)

时间:2013-02-04 14:45:45

标签: vba excel-vba excel

我需要一些帮助来修复我编写的VBA代码。 问题:

我在sheet1上有一个包含3列的Excel文件(“名称”,“ID”和“名称数据”):“名称数据”是一个空白列。

Name        ID      Name Data
Albert      4235 
John        4237 
Robert      4239 
Micky       4241 
Minnie      4243 
Donalid     4245 
Edited      4247 
Goofy       4249 

在表2中,有一个类似的ID列,只有一个ID:例如:

ID
4243

我有一个vlookup代码,用于匹配sheet2上的ID值(例如,这将是“4243”),并在表单1上具有ID值,并将与该ID相关联的名称复制到sheet1的“名称数据”。最终结果应如下所示:

Name       ID    Name Data
Albert    4235 
John      4237 
Robert    4239 
Micky     4241 
Minnie    4243     Minnie
Donalid   4245 
Edited    4247 
Goofy     4249

问题:此代码的问题在于它将名称复制到“名称数据”下的第一个单元格中。例如:它执行以下操作:

Name      ID      Name Data
Albert    4235     Minnie
John      4237 
Robert    4239 
Micky     4241 
Minnie    4243 
Donalid   4245 
Edited    4247 
Goofy     4249

名称“minnie”应该复制在“名称数据”下的第5行而不是第1行(不包括标题行)

有人可以建议我在代码中修复一下吗?

非常感谢!

以下是代码:

Sub lookup()
x = 2
Set rng1 = Worksheets("Sheet1").Range("b4:b8")
Set rng2 = Worksheets("Sheet2").Range("A2:A2")
For Each c1 In rng1
For Each c2 In rng2
If c1.Value = c2.Value Then
Worksheets("sheet1").Cells(x, 3).Value = c2.Value
If c1.Value <> c2.Value Then
Worksheets("Sheet1").Cells(x, 3).Value = Worksheets("Sheet1").Cells(x, 3).Value
x = x + 1
End If
End If
Next
Next
End Sub

我知道这与这一行有关:

Worksheets("sheet1").Cells(x, 3).Value = c2.Value

但我无法弄清楚是什么。

1 个答案:

答案 0 :(得分:0)

我完成了以下代码:

Sub lookup()

Set rng1 = Worksheets("sheet1").Range("B2:B19")
Set rng2 = Worksheets("sheet2").Range("A2:A2")

For Each c1 In rng1
    For Each c2 In rng2
        If c2.Value = c1.Value Then
            Worksheets("sheet1").Cells(c1.Row, 3).Value = Worksheets("sheet1").Cells(c1.Row, 1).Value
        End If
    Next
Next

End Sub

您已更正的文件已共享:https://www.dropbox.com/s/0nsr1iuwnzt1s1x/VlookupVBA.xlsm