我怎样才能防止写这个VBA脚本来清除列中的空白,从而拖延最后?
我有以下脚本写入删除空格在Excel中的长列中的单元格
Sub RemoveBlanks() Dim Rng As Range Dim i As Long i = 1 Application.ScreenUpdating = False Do While i <= 30000 Set Rng = Range("A" & i) If Application.WorksheetFunction.CountA(Rng) = 0 Then Rng.Delete Shift:=xlUp ElseIf Application.WorksheetFunction.CountA(Rng) = 1 Then i = i + 1 Else: Stop End If Loop End End Sub
我想这是一个'一刀切'的macros,所以如果只有20000行,脚本仍然会用完,直到结束。 我一直在尝试添加另一个设置为rng, rng.offset(10,0)
范围chunk
并告诉脚本增加i,如果这个也是空的(因为这只在列的末尾是空的),但是这种方法似乎没有工作。 我可以采取另一个angular度吗?
谢谢
尝试设置一个dynamic范围:
更换
Do While i <= 30000
同
range = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row Do While i <= range
接下来的事情是你必须更新你的范围,如果你删除了一些东西,所以在这一行之后:
If Application.WorksheetFunction.CountA(Rng) = 0 Then Rng.Delete Shift:=xlUp
添加以下代码:
Range = Range -1
你的方法应该从底部开始,并开始工作。 如果没有这样做,可能会导致在第i行被删除时跳过空白,这些行会向上移动,但是会增加i并继续向下。
但是,最好的办法是使用Range.SpecialCells方法和xlCellTypeBlanks参数。
with worksheets("Sheet1") with .columns(1) on error resume next .specialcells(xlcelltypeblanks).delete shift:=xlup on error goto 0 end with end with
如果大量不连续的单元格被删除,这可能会很慢。 可能不会像一次骑自行车一样慢,但仍然很耗时。