1

我需要一些帮助来修复我编写的 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

但我无法弄清楚是什么。

4

1 回答 1

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

于 2013-02-04T17:04:39.130 回答