VBA:多维列表,数组,集合或字典的性能

时间:2013-03-27 10:28:17

标签: vba multidimensional-array

我目前正在编写代码来合并包含不同版本数据的两个工作表。 因此,我首先要通过键列对它们进行排序,然后组合它们并随后在输出工作表中标记版本之间的更改。

由于数据已达到数万行,并且有一天可能超过excel的每工作表行数限制,我希望这些计算在工作表之外运行。它也应该表现得更好。

目前我正在考虑使用第一和第二数据的Quicksort,然后比较每个键/行的数据集。使用比较结果随后格式化单元格。

问题

我只是想知道,我是否应该使用:

列表或数组或集合或词典
OF 列出OR数组或集合或词典

到目前为止,我无法确定这16种可能性之间在可编码性和性能方面的差异。目前我正在实现一种阵列阵列方法,不断想知道这是否有意义?

提前致谢,感谢您的投入和智慧!

1 个答案:

答案 0 :(得分:1)

前一段时间,我遇到了客户端宏的问题。除了真正大量的行(超过50000并且正在增长)之外,当采用“标准方法”时,它具有从某些行号(大约5000)非常慢的问题,即每个行的计算输入从同一工作表中读取行(上面几行);这个读写过程使得这个过程越来越慢(显然,Excel从第1行开始,下面是行,到达那里所需的时间越长)。 我依靠两种不同的解决方案改进了这种情况:首先,设置每个工作表的最大行数,一旦达到,就会创建一个新的工作表,并在那里继续读取/写入(从第一行开始)。另一个变化是将Excel中的读/写移动到从临时.txt文件读取并写入Excel(所有行都在开始时读取以填充文件)。这两个修改提高了很多速度(从半小时到几分钟)。 关于你的问题,我不会过分依赖带有宏的数组(虽然我不确定这些10000行中包含多少信息);但我想这是个人决定。由于效率低于数组,我不太喜欢集合;和词典一样。

我希望这个“简短”的评论会有所帮助。