Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个月删除最后一行不同的空行 我想删除行4之间的空白行,直到底部的绿色单元格之前的最后一行(在这种情况下是行9)。然而,当有新的出口或关闭出口时,每月最后一行都会改变。请问我该怎么办?目前,我每月手动修改vba代码_Vba - Fatal编程技术网

每个月删除最后一行不同的空行 我想删除行4之间的空白行,直到底部的绿色单元格之前的最后一行(在这种情况下是行9)。然而,当有新的出口或关闭出口时,每月最后一行都会改变。请问我该怎么办?目前,我每月手动修改vba代码

每个月删除最后一行不同的空行 我想删除行4之间的空白行,直到底部的绿色单元格之前的最后一行(在这种情况下是行9)。然而,当有新的出口或关闭出口时,每月最后一行都会改变。请问我该怎么办?目前,我每月手动修改vba代码,vba,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 这将删除从4到最后一行-1的所有空行 解释的范围 用于自动筛选的初始范围 ur.Offset(2)。调整大小(ur.R

这是我目前的代码:

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

这将删除从
4
最后一行-1的所有空行



解释的范围

  • 用于自动筛选的初始范围
  • ur.Offset(2)。调整大小(ur.Rows.Count-2)

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

  • 要删除的行的验证范围
  • .SpecialCells(xlCellTypeVisible).Rows.Count>1

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

  • 用于删除空行的范围:
  • .Offset(1).调整大小(ur.Rows.Count-4).整个行程.删除

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

    注意:如果最后一行为空且为绿色,则根据
    UsedRange
    确定最后一行是经过深思熟虑的

    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