我有一个电子表格,偶尔会获得我不知道其内容的新数据,我只需将其添加到电子表格中。一些新数据只是更新电子表格中已有的行,而其他数据则是添加新行。我正在寻找一种方法来添加一个列,当我将旧电子表格与新电子表格进行比较时,该列会告诉我行中是否有更改。
工作表有一列在所有行中始终具有唯一值,因此如果工作表未按相同方式排序,我可以使用它来匹配行。以下是一些截图,展示了我正在尝试做的事情:
旧电子表格:
新电子表格:
我能想到的唯一解决方案是一个大型嵌套IF公式,逐个比较每一列,如:
=IF(Old!B2=New!B2,IF(Old!C2=New!C2,"NO","YES"),"YES")
问题在于,由于我的实际数据使用了33列(不包括此“已更改?”列),因此很难查看,并且将来可能会添加新列。
我对Excel的技术不是很熟练,也没有使用VBA,所以如果有一个我缺少的简单/明显的解决方案,我会提前道歉。
提前感谢您的帮助。
答案 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)