2

我正在尝试删除LastRow变量之前的所有空白行。下面你会找到我的样品。可行的方法似乎是一种严肃的解决方法,我相信它可能会更短/更快,我只是不知道如何去做。

作品 - 严肃的解决方法

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 to LastRow
   If Range("A" & i).value = "" then
      Range("A" & i).value = "xxxxx"
   End if
Next i

For i = 1 to LastRow
   If Range("A" & i).value = "xxxxx" then
      Range("A" & i).Delete
      i = i - 1
   End if
Next i

无限循环

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 to LastRow
   If Range("A" & i).value = "" then
      Range("A" & i).Delete
      i = i - 1
   End if
Next i
4

2 回答 2

2

我还没有测试过这段代码,但它应该可以工作(可能稍作修改):

Range("A1:A" & LastRow).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
于 2012-12-03T14:39:39.887 回答
2

首先,我假设您已将计算设置为手动

其次,您有一个 for 循环,它将 1=i+1 并且您执行 i=i-1 因此 i=i+1-1 无限循环。这也应该发生在工作解决方法中(同样的错误)。

您可以使用选定的步骤进行循环,也可以使用负的步骤。由于删除缩短了范围,您可以从底部开始,现在开始工作

代码如下:

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = LastRow to 1 Step -1
   If Range("A" & i).value = "" then
      Range("A" & i).Delete
   End if
Next i

如果您想删除完整的行,请Range("A" & i).EntireRow.Delete改用。

于 2012-12-03T14:39:57.267 回答