查找并比较两列Excel(带截图)

时间:2013-09-04 14:46:31

标签: excel compare excel-formula

我有一个电子表格,偶尔会获得我不知道其内容的新数据,我只需将其添加到电子表格中。一些新数据只是更新电子表格中已有的行,而其他数据则是添加新行。我正在寻找一种方法来添加一个列,当我将旧电子表格与新电子表格进行比较时,该列会告诉我行中是否有更改。

工作表有一列在所有行中始终具有唯一值,因此如果工作表未按相同方式排序,我可以使用它来匹配行。以下是一些截图,展示了我正在尝试做的事情:

旧电子表格:
Old spreadsheet

新电子表格:
New spreadshhet

我能想到的唯一解决方案是一个大型嵌套IF公式,逐个比较每一列,如:

=IF(Old!B2=New!B2,IF(Old!C2=New!C2,"NO","YES"),"YES")

问题在于,由于我的实际数据使用了33列(不包括此“已更改?”列),因此很难查看,并且将来可能会添加新列。

我对Excel的技术不是很熟练,也没有使用VBA,所以如果有一个我缺少的简单/明显的解决方案,我会提前道歉。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

使用您的示例,在“新建”工作表单元格D2中并向下复制:

=IF(COUNTIF(Old!A:A,A2)=0,"YES",IF(SUMPRODUCT(COUNTIF(INDEX(Old!A:AG,MATCH(A2,Old!A:A,0),0),LEFT(A2:AG2,254)&"*"))=SUMPRODUCT(COUNTIF(A2:AG2,LEFT(A2:AG2,254)&"*")),"NO","YES"))

答案 1 :(得分:0)

vlookup也可以很好地解决这个问题。

在D2中,公式为:

=IF(AND(VLOOKUP(A2,Old!A:C,2,FALSE)=B2,VLOOKUP(A2,Old!A:C,3,FALSE)=C2),"NO","YES")

列号(2和3)是与您尝试匹配的数据相对应的列,使用ID列。

如果列名与旧表中的列名相匹配,则可以使用MATCH找到相应的列

这会使公式看起来更复杂,但如果插入更多列,Excel会调整Old!A:C引用。

公式看起来与列名相匹配

=IF(AND(VLOOKUP(A2,Old!A:C,MATCH($B$1,Old!$1:$1,0),FALSE)=B2,VLOOKUP(A2,Old!A:C,MATCH($C$1,Old!$1:$1,0),FALSE)=C2),"NO","YES")

这个和最后一个之间的区别是使用MATCH($B$1,Old!$1:$1,0)来查找列(使用 $ 来锚定查找值)

答案 2 :(得分:0)

在这种情况下,用于Excel比较的专用软件更好。

我公司使用此软件。看看吧。

http://www.suntrap-systems.com/ExcelDiff/

http://www.youtube.com/watch?v=QQgnWr_RT-8