我需要一些帮助来修复我编写的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
但我无法弄清楚是什么。
答案 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