Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 对单元格编号使用V形查找_Vba_Excel - Fatal编程技术网

Vba 对单元格编号使用V形查找

Vba 对单元格编号使用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匹配,使其如下所示:

因此,我的任务是比较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     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列进行排序,以找到总共有两个的重复项

使用此方法的另一个优点是,很容易将其展开以比较三个或更多列表