Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 如果右边的列匹配,如何从区域复制到单元格?_Vba_Excel_Excel Formula - Fatal编程技术网

Vba 如果右边的列匹配,如何从区域复制到单元格?

Vba 如果右边的列匹配,如何从区域复制到单元格?,vba,excel,excel-formula,Vba,Excel,Excel Formula,我用VLOOKUP和编程的方式寻找解决方案,但我找不到。我希望你们能帮忙 我有两个标题相同、数据相似的电子表格。一个完整,另一个不完整。完成的电子表格的第一列(我们称之为“ID”)混乱不堪 我想根据每个(我们称之为“名称”)右边的单元格是否匹配,将不完整版本的“ID”列中的值复制到新版本 为了澄清,算法或公式必须查看旧(不完整)版本的“名称”列,如果在新版本中找到匹配项,则将其复制到左侧 我不能只是按字母顺序排序并复制粘贴,因为完成的工作表可能需要一些副本 EDIT: EXAMPLE OF MY

我用VLOOKUP和编程的方式寻找解决方案,但我找不到。我希望你们能帮忙

我有两个标题相同、数据相似的电子表格。一个完整,另一个不完整。完成的电子表格的第一列(我们称之为“ID”)混乱不堪

我想根据每个(我们称之为“名称”)右边的单元格是否匹配,将不完整版本的“ID”列中的值复制到新版本

为了澄清,算法或公式必须查看旧(不完整)版本的“名称”列,如果在新版本中找到匹配项,则将其复制到左侧

我不能只是按字母顺序排序并复制粘贴,因为完成的工作表可能需要一些副本

EDIT: EXAMPLE OF MY DATA:
Sheet1                                    Sheet 2
ID      NAME                     ID           Name        Age       
112     John                   156           Dog         11
113     Bob                    1xx           Bob         15    
156     Dog                    1xx           Bob         16 
                               1xx           John        18

由于ID被弄乱了(因为我使用的ID在从Google Fusion表导出时被弄乱了),我需要将旧版本的“ID”复制到新文件中。这只是一个简单的例子,我有20多万行数据。

假设新的电子表格称为“新”,旧的称为“旧”,并假设名称出现在每个电子表格的a列中,从第1行开始,然后在新电子表格的B列中使用以下公式:

=iferror(vlookup(新!A1,旧!A:$A,1,假),“??”)

因此,您的电子表格如下所示:

      A             B
1    Coke         =iferror(vlookup(New!A1,Old!$A:$A,1,false),"?????")
2    Pepsi        =iferror(vlookup(New!A2,Old!$A:$A,1,false),"?????")
3    Sprite       =iferror(vlookup(New!A3,Old!$A:$A,1,false),"?????")
4    asdfvasdl    =iferror(vlookup(New!A4,Old!$A:$A,1,false),"?????")
5    Dr. Pepper   =iferror(vlookup(New!A5,Old!$A:$A,1,false),"?????")
      A             B
1    Coke         Coke         
2    Pepsi        Pepsi        
3    Sprite       Sprite       
4    asdfvasdl    ???????
5    Dr. Pepper   Dr. Pepper   
它应该显示如下:

      A             B
1    Coke         =iferror(vlookup(New!A1,Old!$A:$A,1,false),"?????")
2    Pepsi        =iferror(vlookup(New!A2,Old!$A:$A,1,false),"?????")
3    Sprite       =iferror(vlookup(New!A3,Old!$A:$A,1,false),"?????")
4    asdfvasdl    =iferror(vlookup(New!A4,Old!$A:$A,1,false),"?????")
5    Dr. Pepper   =iferror(vlookup(New!A5,Old!$A:$A,1,false),"?????")
      A             B
1    Coke         Coke         
2    Pepsi        Pepsi        
3    Sprite       Sprite       
4    asdfvasdl    ???????
5    Dr. Pepper   Dr. Pepper   

假设
ID
在两页的A1中,并且
xx
指示要替换的ID,请在第2页和A2中添加新列a:

=IF(ISNUMBER(B2),B2,INDEX(Sheet1!A:A,MATCH(C2,Sheet1!B:B,0)))  
抄袭下来以适应

第一部分
ISNUMBER(B2)
测试数据集中的数字ID是否是声音和损坏的混合体。如果这是一个数字且腐败,则可能无法从提供的信息中识别腐败

因此,如果测试通过,则接受损坏表中的值(即B2)


但是,如果测试失败,则在不完整的工作表(即第4行)中找到相关的
名称
(第2行的相关名称为
)的位置,并使用索引在不完整的工作表中查找与
(其左侧)相关的值

请给我们一张您的数据组织plz的屏幕截图。以及你自己解决它的尝试;无法截屏我的数据,因为这是工作资料。然而,我编辑了我的问题,给出了一个我试图做的例子。谢谢非常感谢。我不认为这适用于我正在尝试做的事情。我编辑了我的问题,以包括一个例子,并更具体地说明我正在尝试做什么。再次感谢!谢谢请你解释一下这个公式的作用好吗?太好了,谢谢!我想我是因为…匹配(C2,…因为我认为应该改为B2。我改变了它,它成功了。谢谢!