Excel:如果多列中的空单元格条件为真,则删除行

Excel:如果多列中的空单元格条件为真,则删除行

我在 Excel 中有一个数据集,需要过滤掉没有数据的行(即空单元格)。这并不像删除一列中有空单元格的行那么简单,而是如果三列都有空单元格,则应该删除整行。执行此操作需要什么宏?

请提供意见。

答案1

下面是一个示例,其中您要检查的列是ABC

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语句是为了获得非常小的速度提升。我只合并第一个单元格,然后在最后汇总到整个行,因为我很懒,而且我更了解单元格符号而不是行符号。如果有任何功能上的改进而不仅仅是样式上的改进,请告诉我。

相关内容