如果所选行中的所有单元格均为空白,则删除行

Delete rows IF all cells in selected ROW is BLANK

我有一些财务数据,其中一些行是空白的,如果选定范围内的整行都是空白,我希望能够删除整行(重要的是它在选定范围内,因为我可能有“收入” “在 A 列中,但 B-D 列是空白数据(基本上没有数字))。

我希望它应用于选定的范围,而不是在代码中有一个预先确定的范围(为了代码灵活)。

我正在尝试使用这种格式,但它似乎不起作用:

Sub deleteBlankRows()
Dim c As Range

On Error Resume Next
For Each c In Selection.Row.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Next
End Sub

欢迎任何想法。

遍历每个完整行选择并检查空白单元格的计数是否与行中所有单元格的计数相匹配:

我的代码:

Dim rng As Range

For Each rng In Selection.Rows
    If Application.WorksheetFunction.CountBlank(rng) = rng.Cells.Count Then rng.EntireRow.Delete
Next rng

执行代码后:

空行不见了

更新:

@VasilyIvoyzha 完全正确。 For each 在这种情况下将无法正常工作。更好的方法是:

Dim i&, x&, lastRow&
lastRow = Range(Split(Selection.Address, ":")(1)).Row
x = Selection.Rows.Count
For i = lastRow To Selection.Cells(1).Row Step -1
    If WorksheetFunction.Concat(Selection.Rows(x)) = "" Then Rows(i).Delete
    x = x - 1
Next i

这种方式会在选择时删除空行,即使它们是连续的。