每月删除具有不同最后一行的空白行

时间:2018-05-05 06:13:42

标签: vba

我想将第4行之间的空白行一直向下移动,直到底部绿色单元格之前的最后一行(在本例中为第9行)。然而,当有新的出口或出口关闭时,最后一排每个月都会改变。我该怎么办呢?目前我每个月都在手动修改vba代码。

这是我目前的代码:

Sub Raw_Data_Delete_Rows()

  Rows("3:3").Select
  Selection.AutoFilter
  Range("A4:Z9").AutoFilter Field:=1, Criteria1:="=" 
  Range("A4:Z9").Select
  Selection.Delete

End Sub

enter image description here

1 个答案:

答案 0 :(得分:0)

这会删除从4last row - 1

的所有空行
Option Explicit

Public Sub RawDataDeleteRows()
    Dim ur As Range

    Set ur = ActiveSheet.UsedRange

    If ur.Rows.Count > 4 Then
        With ur.Offset(2).Resize(ur.Rows.Count - 2)
            .AutoFilter Field:=1, Criteria1:="="
            If .SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then
                .Offset(1).Resize(ur.Rows.Count - 4).EntireRow.Delete
            End If
            .AutoFilter
        End With
    End If
End Sub

Ranges解释

  1. 用于AutoFilter的初始范围
  2. ur.Offset(2).Resize(ur.Rows.Count - 2)

    • .Offset(2) - 从顶部(到第3行)向下移动范围2行
    • .Resize(ur.Rows.Count - 2) - 调整底部,向上调整2行,以使用最后一行
    1. 要删除的行的验证范围
    2. .SpecialCells(xlCellTypeVisible).Rows.Count > 1

      • 除AutoFilter标题
      • 外,检查其他(可见)行是否退出
      1. 用于删除空行的范围:
      2. .Offset(1).Resize(ur.Rows.Count - 4).EntireRow.Delete

        • 此范围基于上述(1)
        • 的初始自动筛选范围
        • .Offset(1) - 从第3行(第4行)向下移动范围1行
        • .Resize(ur.Rows.Count - 4) - 调整底部,4行 - 排除3个hdrs& LASTROW

        注意:根据UsedRange确定最后一行是故意的,以防最后一行为空且为绿色