在excel中标识行或列的添加或删除

在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

我正在寻找一个解决方案,它可以识别任何行或列在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 8
 9 7 2 8 2 4
除了1个单元格项外,添加的行几乎相似。在这种情况下,LCS将不起作用,因为它的大多数单元格项都是类似的,我无法确定行是先删除的,然后添加了新行

这里是一个建议的“比较”算法:

  • 在原始文件+新文件中标记每行

  • (a) 找到等效线并匹配它们(b)标记它

  • (a) 找到新行(b)标记它


  • 执行示例:

    假设两个数据都位于每个文件的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不需要,值也可以相同。