有两个地方可改进
redim preserve 这个语句每循环一次重定义一次数组长度,效率很底的。我做过一个试验,数组长度从1依次扩展到1亿花了5、6分钟,但是从1亿逐渐缩小到1才两三秒。原因是数组扩展时它要重新分配一个完整空间,然后把原有数据拷贝过去,而缩小的时候不需要重新分配空间,只是把最大下标指针前移就可以了。
通过循环数组元素连接成串也是很慢的,Join函数可取代。
如果要更快一些,就用词典对象,这个可以打开附件看看差别。
你跑完多少秒,统计了吗,你可以关闭界面更新进行计算输出,完了再打开。
Application.ScreenUpdating = False
计算输出
Application.ScreenUpdating = True