【问题标题】:Dynamic selection of visible rows after advanced filtering高级过滤后动态选择可见行
【发布时间】:2017-08-14 09:06:19
【问题描述】:

我有一个代码,它首先通过高级过滤,过滤一个表。在此之后,我想选择表中除标题之外的所有行并将其删除。在我的表中,我有 20 列数据,其中一些行在前 10 列中有数据,在第 11 列和第 20 列之间有空单元格,所以我不能真正使用 selection.end(xldown, xlright).select 等,因为 som 行有空单元格.

我不知道如何修复此选择。各位专家对此有什么建议吗?

Sub notWanted()

Range("TabellInDataPivot[[#All],[Projekt]]").AdvancedFilter Action:= _
    xlFilterInPlace, CriteriaRange:=Sheets("Groupfiles").Range("C8:E9"),   Unique _
    :=False

    lastrow = ThisWorkbook.Worksheets("GruppData").Range("A" & Rows.Count).End(xlUp).Row
     .Range(.Cells(4, 3).Offset(rowoffset:=1), .Cells(lastrow, 20)).SpecialCells(xlCellTypeVisible).Select

     Selection.EntireRow.Delete
     ActiveSheet.ShowAllData
End Sub

我在代码行 .Range**(.Cells**(4, 3) 中收到无效或不合格的引用错误,尽管这在早期的过滤和删除段中工作正常。

提前致谢 /D

【问题讨论】:

    标签: vba excel filter


    【解决方案1】:

    Excel 似乎不允许您删除过滤表中的行。在这种情况下,我认为您只需要使用宏进行过滤,然后选择所有可见行并单击 OK on the prompt。很高兴听到是否有人找到了解决此问题的 VBAish 方法。

    【讨论】:

    • 感谢乔希的输入!我一直在尝试,但我也想知道是否有人对此有 VBAish 方法。
    【解决方案2】:

    我想我明白了!

    我的代码结果如下,

    Sub notWanted()
    
    
    With ThisWorkbook.Worksheets("GD")
    
    Range("TabellInDataPivot[[#All],[Projekt]]").AdvancedFilter Action:= _
        xlFilterInPlace, CriteriaRange:=Sheets("Groupfiles").Range("C8:E9"), Unique _
        :=False
    
        lastrow0 = .Range("F" & Rows.Count).End(xlUp).Row
    
    Range("D2", Cells(Rows.Count, "D").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells(2, 52).Select
    .Range(Cells(3, 1), Cells(lastrow0, 55)).Rows.EntireRow.Select
    Selection.EntireRow.Delete
    ActiveSheet.ShowAllData
    End With
    End Sub
    

    我添加了 lastrow 语句,然后添加了 wholerow.delete。它似乎有效,所以我希望它会做它的事!

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2010-11-25
      相关资源
      最近更新 更多