Vba 对单元格编号使用V形查找
因此,我的任务是比较excel中的工作表,如果有匹配项将一个单元格中的数据替换为另一个单元格,例如,我在两个excel工作表中有两列,ID和名称,我想比较工作表1中的ID和工作表2中的ID,如果发现匹配项,则更新与该ID链接的名称 表1Vba 对单元格编号使用V形查找,vba,excel,Vba,Excel,因此,我的任务是比较excel中的工作表,如果有匹配项将一个单元格中的数据替换为另一个单元格,例如,我在两个excel工作表中有两列,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 Thomas
2 Jerry
第2页
ID Name
3 Spike
1 Tom
因此,在上面的示例中,我需要代码来查看两张表中的ID 1,并将表1中的名称更改为与表2匹配,使其如下所示:
ID Name
1 Tom
2 Jerry
ID Name Source
1 Thomas Sheet 1
2 Jerry Sheet 1
3 Spike Sheet 2
1 Tom Sheet 2
Name Sheet 1 Sheet 2 Total
Thomas 1 0 1
Jerry 1 0 1
Spike 0 1 1
Tom 0 1 1
我正在尝试使用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语句中使用它来提取正确的数据。也许有一个更简单的方法可以做到这一点,如果是这样的话,我愿意改变一切
任何帮助都将不胜感激。我认为这项任务不需要VBA。由于“Sheet1”中的名称必须通过查看“Sheet2”中的数据进行更新。以下公式可用于查找更新后的名称(通过查看“Sheet2”中的数据) IFERROR用于保留“Sheet2”数据中未找到的名称。请看下面的示例屏幕截图
最简单的方法是在第三张纸上,在a行中创建3个标题:ID、名称和来源。将数据从表1复制到前两列,并用文本表1填充第三列。对工作表2执行相同操作,但将其粘贴到工作表1数据下方。你应该以这样的方式结束:
ID Name
1 Tom
2 Jerry
ID Name Source
1 Thomas Sheet 1
2 Jerry Sheet 1
3 Spike Sheet 2
1 Tom Sheet 2
Name Sheet 1 Sheet 2 Total
Thomas 1 0 1
Jerry 1 0 1
Spike 0 1 1
Tom 0 1 1
然后,只需从该数据创建一个数据透视表,其中source作为列,name作为行,数据的name计数。它应该是这样的:
ID Name
1 Tom
2 Jerry
ID Name Source
1 Thomas Sheet 1
2 Jerry Sheet 1
3 Spike Sheet 2
1 Tom Sheet 2
Name Sheet 1 Sheet 2 Total
Thomas 1 0 1
Jerry 1 0 1
Spike 0 1 1
Tom 0 1 1
然后,您可以对Total列进行排序,以找到总共有两个的重复项
使用此方法的另一个优点是,很容易将其展开以比较三个或更多列表