2012-02-08 49 views
1

我有两个独立的Excel文件,其中包含一个旧的和一个新的电气设备寄存器,都包含由相同资产编号标识的电气设备记录。Excel中的数据匹配

第一个文件是我们旧的资产登记册,其中包含旧的资产编号和工厂的完整描述。第二个文件是新的资产登记册。在某些情况下,进行新资产登记的人员对该工厂的内容进行了有意义的描述,但是当他们在某些工厂中看到我们的旧资产编号时,他们只是用它作为描述。

我需要做的是从旧文件中提取新文件中任何记录的描述,其中描述=旧文件中该工厂的资产编号。

I.e.

if (current_cell_value exists in old register) 
    {pull description of that item from old register and store in corresponding cell in new register;} 

旧文件看起来像这样:

 
5538 PC 
2398 Monitor 

新文件看起来像这样:

 
1449449 Office IEC LEAD 
1449450 Office MONITOR 
1449451 Office 5538 
1449452 Office 2398 
1449453 Office IEC LEAD 

最后,我想新的文件看起来像这样:

 
1449449 Office IEC LEAD 
1449450 Office MONITOR 
1449451 Office PC 
1449452 Office MONITOR 
1449453 Office IEC LEAD 

我将如何做到这一点?

回答

3

假设你可以将旧资产表中的列A和B复制到一个空表在新的工作簿,让我们把它们放在一个名为“老”片,再在A和B列

现在假设您的新数据集是列A,B和C,它是列C,您需要更改“某些”值。

在一个空列,比方说D2,把这个配方并抄下:

=IF(ISNUMBER(MATCH(C2, Old!$A:$A, 0)), VLOOKUP(C2, Old!$A:$B, 2, 0), C2) 

现在你有一个新的价值观,并希望所有的NUMERICS匹配,现在显示旧寄存器描述。

突出显示新值列并复制它们。 单击列C中的原始值组并执行编辑>选择性粘贴>值

现在,清除D列并完成。

注:如果你使用的是Excel 2007及更高版本,那么你可以使用除上述简单的公式,你可以使用这个:

=IFERROR(VLOOKUP(C2, Old!$A:$B, 2, 0), C2) 
+0

感谢您的!除了将两列合并在一起的最后一步之外,这一切都奏效了。 D列结束时没有匹配的零和有匹配的数据,因此当您将此列中的值粘贴到列C时,原始数据将被覆盖。我只想覆盖数字。 因为所有我想要替换的数据都是数字,所以我用IF =(ISNUMBER(C1),D1,C1)解决了这个问题,但是我想你的解决方案必须自动实现某种方式吗? – 2012-02-08 06:26:25

+0

我给出的公式应该在D列中创建一个完整的新列表。对于与旧寄存器不匹配的值,新列表应显示C列中的新值。当在C列顶部复制>编辑> pastespecial>值时,它应该用新的扁平值替换所有值,而不是公式。再试一次。 – 2012-02-08 07:00:36

+0

谢谢,不知道我做错了什么,但是当我在真实数据上使用它时,它们都结束了。干杯。 – 2012-02-09 06:33:46