如果右边的列匹配,如何从范围复制到单元格?

时间:2015-04-01 19:53:28

标签: excel vba excel-vba excel-formula

我使用VLOOKUP并以编程方式寻找解决方案,我无法找到它。我希望你们能帮忙。

我有两个具有相同标题和类似数据的电子表格。一个是完成,另一个不是。完成的电子表格的第一列(让我们称之为" ID")搞砸了。

我想复制" ID"不完整版本的列到新版本的基础上,如果每个单元格右侧的单元格(让我们称之为"名称")匹配。

为了澄清,算法或公式必须通过列" Names" OLD(不完整)版本,如果在新版本中找到匹配项,请将其复制到左侧。

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

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 Tables导出时搞砸了)我需要将新文件复制到" Ids"来自OLD版本。这只是一个简单的例子,我有超过200 000行数据。

2 个答案:

答案 0 :(得分:0)

假设新电子表格被调用"新"旧的叫做#34; Old,"并假设名称出现在每个电子表格的A列中,从第1行开始,然后在新电子表格的B列中使用此公式:

= IFERROR(VLOOKUP(新A1,旧$ A:!$ A,1,假)," ?????&#34)

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

      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   

答案 1 :(得分:0)

假设两个工作表上的ID都在A1中且xx表示要替换的ID,请在工作表2和A2中添加新的ColumnA:

=IF(ISNUMBER(B2),B2,INDEX(Sheet1!A:A,MATCH(C2,Sheet1!B:B,0)))  

复制到西装。

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

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

如果测试失败,则在不完整的工作表(即Row4)中找到相关Name的位置(对于Row2,相关名称为Dog)并使用INDEX进行查找不完整工作表中与Dog(左侧)关联的值。