我在 Excel 中有一个数据集,需要过滤掉没有数据的行(即空单元格)。这并不像删除一列中有空单元格的行那么简单,而是如果三列都有空单元格,则应该删除整行。执行此操作需要什么宏?
请提供意见。
答案1
下面是一个示例,其中您要检查的列是A
、B
和C
。
Option Explicit
Sub DeleteIfBlanks()
Dim r As Long
Dim rng As Range
With ActiveSheet
For r = 1 To .UsedRange.Rows.Count
If LenB(.Cells(r, 1)) = 0 Then
If LenB(.Cells(r, 2)) = 0 Then
If LenB(.Cells(r, 3)) = 0 Then
If rng Is Nothing Then Set rng = .Cells(r, 1) Else Set rng = Union(rng, .Cells(r, 1))
End If
End If
End If
Next
If Not rng Is Nothing Then rng.EntireRow.Delete
End With
End Sub
您需要更改语句LenB(.Cells(r, 1))
,以便它1
对应于您想要检查空白的列号。
对于其他 VBA 使用者:我嵌套IF
语句是为了获得非常小的速度提升。我只合并第一个单元格,然后在最后汇总到整个行,因为我很懒,而且我更了解单元格符号而不是行符号。如果有任何功能上的改进而不仅仅是样式上的改进,请告诉我。