复制数据并比较Excel VBA

时间:2017-08-07 13:32:36

标签: excel vba excel-vba connection compare

不确定这是否可能完全可能,但我知道这很可能是单独的。我在网络上有一个共享的启用宏的文档,希望能够看到已更新的内容。首先,要指出一些事项;

  1. 有问题的工作表(组合表)有一个宏,它从10个其他工作表(从连接中放置)中选取数据/范围,并显示在组合工作表中。原因是其他10个工作表由其他用户/团队更新。这个组合表当然只显示所有数据。

  2. 我们现在要添加的内容可以让我们知道最新的条目是什么。我已经看到了一些代码,它们会在字段的下一列上放置一个时间戳,该列已经更新了。这对我们不起作用。

  3. 有人提到将数据从组合表(实时)中提取到新工作簿。将此工作簿中的另一个工作表作为最后更新的工作表,然后使用另一个工作表进行比较&突出了差异。

  4. 我知道这是一个不寻常的请求,并且不知道采用什么方法(试图提高效率)。执行此请求。

    欢迎任何建议/提示。

    这是已有代码的片段;

    `Sub sbCopyRangeToAnotherSheet()
    
    Sheets("Business Development").Range("A2:T50").Copy
    Sheets("Combined").Activate
    Range("A4:T50").Select
    ActiveSheet.Paste
    
    Sheets("Compliance").Range("A2:T50").Copy
    Sheets("Combined").Activate
    Range("A52:T101").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
    End Sub`
    

1 个答案:

答案 0 :(得分:0)

这就是我要做的事情:

1-在VBA模块中添加“哈希”功能,请参阅Create a hash value

2-在数据的下一栏(比如列E)中添加此功能:=base64sha1(CONCATENATE(A10;B10;C10;D10))
这将根据您在A,B,C,D列中的数据为您提供哈希码:每次值更改时,哈希码都会更改。

3-在更新宏中,在进行更新之前,请在F列中复制E列。

4-最后一件事是设置一个条件格式,检查E列中的值是否与F列中的值不同。

注意:如果您将列E的标题设置为Now(),并且在步骤3-中,您在列F之前插入一个新列(而不是覆盖以前的哈希码),您将拥有所有信息都知道哪一行被更改以及何时更改。

希望这有帮助!