使用V-Lookup查看单元格编号

时间:2016-01-06 09:54:06

标签: excel vba excel-vba

所以我被赋予了与excel中的工作表进行比较的任务,如果有匹配将一个单元格中的数据替换为另一个单元格,例如,我在2个excel表格中有2列,ID和名称,我想将工作表1中的ID与工作表2中的ID进行比较,如果找到匹配更新,则将该名称与该ID相关联。

第1页

ID     Name
1      Thomas
2      Jerry

第2页

ID    Name
3     Spike
1     Tom

因此,在上面的示例中,我需要代码才能看到ID 1在两个工作表中并更改工作表1中的名称以匹配工作表2,因此它看起来像这样:

ID    Name
1     Tom
2     Jerry

我试图使用Vlookup,这让我可以看出它是否存在,但后来我不知道如何更改单元格以匹配现有单元格,这里是我的代码到目前为止:

Range("C2").Select
ActiveCell.Formula = _
    "=IF(ISNA(VLOOKUP([@[ID]], 'Sheet2'!A:B,1,FALSE)), ""New"", ""Existing"")"

Do While Len(Range("A" & r).Formula) > 0

If (Range("C" & r).Value = "Existing") Then
   Sheets("Sheet2").Range("A" & r & ":B" & r).Copy _
   Destination:=Sheets("sheet1").Range("A" & r & ":B" & r)
Else
End If

我需要能够从Vlookup获取单元格编号,以便我可以在if语句中使用它来获取正确的数据。可能有一种更简单的方法,如果是这样,我愿意改变一切。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我认为VBA不需要这项任务。由于“Sheet1”中的名称必须通过查看“Sheet2”中的数据来更新。以下公式可用于查找更新的名称(通过查看“Sheet2”中的数据)。

=IFERROR(VLOOKUP(A2,Sheet2!A2:B3,2,FALSE),B2)

使用IFERROR以保留“Sheet2”数据中未找到的名称。请查看示例的以下屏幕截图。

enter image description here

答案 1 :(得分:0)

最简单的方法是在第三张纸上创建A行中的3个标题:ID,名称和来源。将数据从表1复制到前两列,并使用文本表填充第三列1.对表2执行相同操作,但将其粘贴到表1数据下方。你应该得到这样的东西:

ID  Name   Source
1   Thomas Sheet 1
2   Jerry  Sheet 1
3   Spike  Sheet 2
1   Tom    Sheet 2

然后,只需从此数据创建一个数据透视表,其中source为列,name为行,数据名称为count。看起来应该是这样的:

Name    Sheet 1  Sheet 2  Total
Thomas  1        0        1
Jerry   1        0        1
Spike   0        1        1
Tom     0        1        1 

然后,您可以对“总计”列进行排序,以查找总共有两个重复项。

使用此方法的另一个好处是,可以很容易地扩展它以比较三个或更多列表。