VBA在Do While循环中捆绑

时间:2014-06-08 13:17:08

标签: excel vba excel-vba copy paste

我正在使用Excel 2010.我有一个Do While循环处理超过100,000行的大表。如果它在表中找到特定单元格,它会在该单元格后插入两行,并将该行的内容复制到刚创建的两个新空白行。循环工作正常,直到大约20,000行,然后锁定。到目前为止,它处理得很完美。它并不总是锁定在同一行上。我正在使用副本,然后使用特殊粘贴来复制行。在为行完成复制粘贴后,我用“Application.CutCopyMode = False”清除剪贴板。如果我注释掉复制/粘贴,则循环成功完成  对于我正在使用的数据量,我猜它会根据原始表插入大约30,000行。关于复制/粘贴特殊问题,我应该知道些什么吗?

2 个答案:

答案 0 :(得分:0)

您正在使用表格,为什么需要插入行?

将它们附加到表格的末尾。如果订单是一个问题,那么特定订单中的表可以按顺序放入一个排序(一个排序键,可能已隐含在您的表中)。

更好的是 - 将新行附加到内存表对象中,并在循环完成时将整个表对象粘贴到原始表的末尾。这样你也可以避免处理插入的行,在循环中获得更简单的逻辑,并且进程可能运行得更快。

答案 1 :(得分:0)

首先,我评论了粘贴,但失败了。如果没有复制和粘贴,两行的插入也会失败。我的解决方案是首先订购起始表。当我发现需要复制的行时,我将该行读入一个数组,然后将数组保存到超出表底部的行。在处理完表后,我使用我首先创建的订单列重新排序行,然后删除该列。运行速度比复制/粘贴快,但我在新行中丢失了单元格格式。