【发布时间】:2013-11-13 23:01:38
【问题描述】:
我有一小段代码标记重复并从工作表中删除行。
识别重复的部分只是在 J 列数据的右侧添加了“重复”一词,该部分似乎工作正常。
其他部分看起来也可以正常工作,但是一旦完成,它就会挂断 excel,我必须强制它关闭。这是删除部分的代码:
While Not IsEmpty(Range("J2:J" & InvLast))
For InvList = 2 To InvLast
If Range("J" & InvList).Value = "Duplicate" Then
Range("J" & InvList).EntireRow.Delete
End If
Next InvList
Wend
我正在处理的测试文件中的 InvLast 只有 28 行,但我需要能够处理几千行而不需要一天的时间来运行。
提前致谢!
【问题讨论】:
-
需要while循环吗?看起来你的嵌套 For 循环会自己完成这项工作。
-
只要J列的至少一个单元格中有东西,while循环就永远不会关闭?假设你没有删除每一行,循环不会关闭。
-
我原以为for循环也会这样做,但是如果连续有一对,excel会删除第一个,然后第二个移动到第一个的行号,但是循环继续。我添加了 while 来覆盖范围,因此 for 循环将遍历 J 中的范围,直到它为空,并且只有 28 个单元格可以遍历,我看不出它在哪里被阻止。
标签: vba excel while-loop