在excel中标识行或列的添加或删除
我正在寻找一个解决方案,它可以识别任何行或列在excel文件中的添加或删除 我现在想到的是,通过使用LCS即“最长公共子序列”算法,我可以找出excel文件两个版本之间的公共子序列,但这种方法并非100%正确 例如 Excel版本1在excel中标识行或列的添加或删除,excel,algorithm,Excel,Algorithm,我正在寻找一个解决方案,它可以识别任何行或列在excel文件中的添加或删除 我现在想到的是,通过使用LCS即“最长公共子序列”算法,我可以找出excel文件两个版本之间的公共子序列,但这种方法并非100%正确 例如 Excel版本1 1 2 4 5 9 3 4 9 3 7 5 3 8 2 7 9 3 8 9 7 2 8 2 4 更新后,我删除了1行(第2行),并添加了1行(在同一位置,即第2行) Excel版本2 1 2 4 5 9 3 4 9 5 7 5 3 8 2 7 9 3
1 2 4 5 9 3
4 9 3 7 5 3
8 2 7 9 3 8
9 7 2 8 2 4
更新后,我删除了1行(第2行),并添加了1行(在同一位置,即第2行)
Excel版本2
1 2 4 5 9 3
4 9 5 7 5 3
8 2 7 9 3 8
9 7 2 8 2 4
除了1个单元格项外,添加的行几乎相似。在这种情况下,LCS将不起作用,因为它的大多数单元格项都是类似的,我无法确定行是先删除的,然后添加了新行 这里是一个建议的“比较”算法:
执行示例: 假设两个数据都位于每个文件的A1:F4中。在这两个文件中,添加执行[1]的新列
In Sheet1 & Sheet2 :
in H1 put =ROW()
in I1 put =A1&","&B1&","&C1&","&D1&","&E1&","&F1
in J1 put =H1&" - "&I1
向下拖动所有
因此,对于[2],使用第三个excel文件(或新工作表),比较“内容”和“内容行数”列。因为我使用Sheet1作为原始文件,Sheet2作为新文件,所以我的公式如下所示
In Sheet3 :
in B1 label "row number"
in C1 label "content InOriginal"
in D1 label "RomNum&content InOriginal"
in E1 label "content NewFile"
in F1 label "RomNum&content NewFile"
in H1 label "content match"
in I1 label "content & rowNumber match"
Then,
in B2 put "=Sheet1!H1"
in C2 put "=Sheet1!I1"
in D2 put "=Sheet1!J1"
in E2 put "=Sheet2!I1"
in F2 put "=Sheet2!J1"
in H2 put "=EXACT(C2,E2)"
in I2 put "=EXACT(D2,F2)"
然后向下拖动
真/假结果是(基本)比较的结果。如果需要进行更多分析,可以继续修改/添加所需的公式
希望能有帮助。(:
示例文件是。@SolarMike我在这里添加了一个示例,希望这能更清楚地说明我在寻找什么。跟踪工作簿的更改是否满足您的要求?@Jerry跟踪更改不适用于我的要求,因为我需要比较存储在某个位置的excel文件的两个版本。我需要创建一个ich比较两个文件中的更改,但不打开它。每行的值是否唯一?@p._phidot_u不需要,值也可以相同。