【问题标题】:Delete Blank Rows from Column B从 B 列中删除空白行
【发布时间】:2017-11-07 16:04:46
【问题描述】:

我正在尝试删除 B 到 AD (Lastrow) 列为空白的所有行。在我的 Excel 表上,每几行左右 B 到 AD 列都是空白的,所以我试图删除这些行。我一直在尝试使用以下代码:

Sub T()
    Dim rng As Range

    Set rng = Range("B1:AC10402")
    rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

没有成功

【问题讨论】:

  • 是整行空白还是这些行中只有部分单元格空白?
  • 除A列外整行为空白。
  • 所以基本上如果任何行中的 b 到 ac 列是空白的,删除它?
  • @pokemon_Man Ya 没错

标签: vba excel


【解决方案1】:

试试这个代码:

Sub DeleteBlankRows()
Dim i As Long
Dim lastRow As Long: lastRow = 10 'here you have to specify last row your table uses
For i = lastRow To 1 Step -1
    If Cells(i, Columns.Count).End(xlToLeft).Column = 1 Then
        Rows(i).Delete
    End If
Next i

End Sub

小解释

您指定需要检查行、B 到 AD 列中的空白。这段代码Cells(i, Columns.Count).End(xlToLeft).Column 将返回最右边的列(从第一列开始),非空单元格。如果整行为空或第一列中有数据 - 它将返回 1 - 当您考虑 A cloumn 时,这是一种误导。但它不在这里,因为我们考虑以B 开头的列。所以如果返回1,则表示该行为空,应该删除。

【讨论】:

    【解决方案2】:

    这将删除 B 列中的所有空白行

    Dim LastRow, i As Integer
    LastRow = activesheet.Cells(activesheet.Rows.Count, "A").End(xlUp).Row
    For i = LastRow To 1 Step -1
        If WorksheetFunction.CountA(Range("B" & i)) = 0 Then
            Range("B" & i).EntireRow.Delete
        End If
    Next i
    

    如果 B 列到 AC 列为空白,则删除所有空白行

    Dim LastRow, i As Integer
    LastRow = activesheet.Cells(activesheet.Rows.Count, "A").End(xlUp).Row
    For i = LastRow To 1 Step -1
        If WorksheetFunction.CountA(Range("B" & i & ":" & "AC" & i)) = 0 Then
            Range("B" & i & ":" & "AC" & i).EntireRow.Delete
        End If
    Next i
    

    【讨论】:

    • 有文字是A列。但是从B到最后一行它将是空的,所以我正在尝试删除这些行。
    • 我在 .rows 上的这两个代码上出现编译错误
    • @pokeman_Man 第二个代码运行良好。第一个删除了我的整个 excel 表哈 - 谢谢
    猜你喜欢
    • 2011-05-30
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多