我想将第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
答案 0 :(得分:0)
这会删除从4
到last 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解释
ur.Offset(2).Resize(ur.Rows.Count - 2)
.Offset(2)
- 从顶部(到第3行)向下移动范围2行.Resize(ur.Rows.Count - 2)
- 调整底部,向上调整2行,以使用最后一行 .SpecialCells(xlCellTypeVisible).Rows.Count > 1
.Offset(1).Resize(ur.Rows.Count - 4).EntireRow.Delete
.Offset(1)
- 从第3行(第4行)向下移动范围1行.Resize(ur.Rows.Count - 4)
- 调整底部,4行 - 排除3个hdrs& LASTROW 注意:根据UsedRange
确定最后一行是故意的,以防最后一行为空且为绿色