0

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

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

旧电子表格:
旧电子表格

新电子表格:
新电子表格

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

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

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

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

在此先感谢您的帮助。

4

3 回答 3

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"))
于 2013-09-04T15:04:41.793 回答
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 找到适当的列

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

该公式看起来像这样以匹配列名

=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)来查找列(使用$ s 来锚定查找值)

于 2013-09-04T16:33:06.600 回答
0

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

我公司用这个软件。一探究竟。

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

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

于 2013-09-05T16:42:07.700 回答