【问题标题】:Is there any way to speed up excel comparision in VBScript?有什么方法可以加快 VBScript 中的 excel 比较速度?
【发布时间】:2013-10-25 17:46:51
【问题描述】:

我首先制作了一个 VBA 脚本来比较两个 excel 文件。然后使用 Variant 对其进行优化,如this 问题中所述。但后来,我把它改成了 VBScript。在这里,上面说的方法似乎不起作用。 还有其他更好的方法来加快这个过程吗?特别是对于大文件。

我的核心代码如下:-

For Each cell In objxlWorksheet1.UsedRange
 If cell.Value <> objxlWorksheet2.Range(cell.Address).Value Then
  'fill the color in the cell if there is a mismatch and Increment the counter
  objxlWorksheet2.Range(cell.Address).Interior.ColorIndex = 3
  counter=counter+1
 End If
Next

【问题讨论】:

  • 将两个范围读入数组并在内存中进行比较。您的代码每次必须读取单元格的值时都会触及工作表,这需要时间。创建存储颜色索引的第三个数组——为每个匹配值存储数字“3”,为不匹配存储数字“0”。然后循环遍历该数组并盲目更新 ColorIndex 属性。

标签: excel vba vbscript


【解决方案1】:

这取决于您要比较的是什么。如果您有两张具有相似数据表的工作表,则使用公式而不是 VBA 代码会更容易。只需新建一个工作表并输入如下公式:=Sheet1!A1=Sheet2!A1 然后您可以使用 Ctrl-Find 搜索False

或者,如果您可以并排复制一张纸上的数据,您可以使用条件格式来突出显示不同的值。

【讨论】:

  • 在比较之前我必须删除一些列并进行一些排序操作。这应该是更多的通用代码。(删除第一列和最后一列,不一定总是 A,H)。所以我使用了 Vb 脚本。另外我正在寻找是否有一些算法比我发布的代码做得更好。这对我来说似乎有点初级。
  • 你的方法没有问题,只是需要很长时间。但是,如果我们对您正在比较的内容以及您希望完成的内容有更多了解,也许可以有其他方法来做同样的事情,而不需要逐个单元格的比较。
猜你喜欢
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 2011-10-22
  • 2016-02-16
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
相关资源
最近更新 更多