excel - VBA - 删除空行直到有数据
问题描述
我有一个看起来像这样的数据,空行的数量可能会增加或减少并且不固定。
我想做的就是把它变成这个,删除空行,直到有数据并让它停止。我不希望它删除可能位于数据中间的其他空行。
我一直在测试某些东西,这就是我所拥有的,但是这段代码并没有清除所有的空行,而只是清除了一些。我意识到问题可能出在使用for each cell in rng
方式上,因为当我使用时它会继续到下一个单元格cell.entirerow.delete
,但我可能错了。
Sub Test()
Dim cell as range, rng as range
Dim lRow as long
Set rng = Range("C3:C" & lRow)
For Each cell In rng
If IsEmpty(cell.Offset(-1)) Then
cell.Offset(-1).EntireRow.Delete
Else
Exit For
End If
Next cell
End Sub
谢谢你帮忙
解决方案
您遇到了一个经典问题。挑战是;如果您删除第 26 行,之前为 27 的行将是 26。因此,下一个循环将跳过它,并且您留下(可能)空白行。
解决这个问题的一种方法是做一个向后循环。我的解决方案是:
Sub Test()
Dim lRow As Integer
For i = 2 To 100
If IsEmpty(Cells(i, 1)) Then
lRow = i
Else
Exit For
End If
Next i
For i = lRow To 2 Step -1
If IsEmpty(Cells(i, 1)) Then
Cells(i, 1).EntireRow.Delete
End If
Next i
End Sub
这解决了这个问题,因为如果你删除第 26 行,之前的第 27 行将变为第 26 行。但是这个改变并不重要,因为循环现在从下到上,意味着下一个循环检查第 25 行。
推荐阅读
- jenkins - 在 Blueocean 中的 Github 企业登录
- vuejs2 - 如何禁止在我的 vuejs 应用程序的任何行末尾输入分号
- c++ - 包含 *new 创建的互斥量不能的类
- java - 如何在Java中使用键和值对未排序数组使用二进制搜索?
- reactjs - 如何正确防止子项在更改值上重新呈现?
- javascript - 从 JSON / CSV 加载内容并使用 basil.js 使文本框适合内容
- python - Python函数不返回None而不是元组列表
- python - 如何将添加字符串应用到数据框子集的列
- documentation - 哪里可以获得关于 dm 脚本函数的详细文档
- azure-functions - 读取文本文件并将内容发送到 Azure 数据工厂中的 Azure 函数