首页 > 解决方案 > 每月删除最后一行不同的空白行

问题描述

我想一直删除第 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

在此处输入图像描述

标签: vba

解决方案


这将删除从4to开始的所有空行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

范围解释

  1. 用于自动筛选的初始范围

ur.Offset(2).Resize(ur.Rows.Count - 2)

  • .Offset(2)- 从顶部向下移动 Range 2 行(到第 3 行)
  • .Resize(ur.Rows.Count - 2)- 调整底部,向上 2 行,到最后使用的行

  1. 要删除的行的验证范围

.SpecialCells(xlCellTypeVisible).Rows.Count > 1

  • 检查除 AutoFilter 标头之外的其他(可见)行是否存在

  1. 用于删除空行的 Range:

.Offset(1).Resize(ur.Rows.Count - 4).EntireRow.Delete

  • 此范围基于上述 (1) 的初始自动过滤范围
  • .Offset(1)- 将范围 1 行从第 3 行(第 4 行)向下移动
  • .Resize(ur.Rows.Count - 4)- 调整底部大小,向上 4 行 - 排除 3 个 hdrs 和 lastrow

注意:确定最后一行UsedRange是经过深思熟虑的,以防最后一行为空且绿色


推荐阅读