Excel 比对两个行式工作表的差异

例题描述和简单分析

Excel 数据有 2 个表格,两者格式相同,A 列都是逻辑主键,下面表格(称为表 1)的数据比上面表格(称为表 2)新。具体如下:

..

想要对比两个表格的不同:

(1)找到表2和表1的差异,即所有新增的数据,结果如下:

..

2)找到所有删掉的数据,即

..

3)找到所有修改(主键不变,其他列变化)的记录,即:

..

解法及简要说明

使用Excel插件SPL XLL

在空白单元格分别写入如下公式:

1)找到表2和表1的差异,即所有新增的数据。

=spl("=[E@b(?2),E@b(?1)].merge@od(_1)",A1:B5,A9:B13)

如图:

..

2)找到所有删掉的数据。

=spl("=[E@b(?1),E@b(?2)].merge@od(_1)",A1:B5,A9:B13)

如图:

..

3)找到所有修改(主键不变,其他列变化)的记录。

=spl("=[[E@b(?2),E@b(?1)].merge@od(),[E@b(?2),E@b(?1)].merge@od(_1)].merge@od()",A1:B5,A9:B13)

如图:

..

简要说明

函数merge实现归并运算,@o表示对内存数据进行不排序归并,@d表示归并中计算差集。

通过比对第1列,对表2和表1进行差集运算,从而算出新增的数据。

同理,比对第1列,对表1和表2进行差集运算,算出删除的数据。

先通过比对整行,算出新增或修改的数据。再将该中间结果与第(1)步结果比对整行,算出修改的数据。

问答搜集

https://stackoverflow.com/questions/63841318/comparing-column-a-to-b-and-b-to-a-and-copy-entire-row-of-missing-and-added-to-n