我有一个代码,首先通过高级过滤,过滤表格。在此之后,我想要选择除表头之外的表中的所有行并删除它。在我的表中,我有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)Altough这在早期的过滤和删除段中工作正常。
提前致谢 / d
答案 0 :(得分:0)
Excel似乎不允许您删除已过滤表格中的行。在这种情况下,我认为您只需要使用宏进行过滤,然后选择所有可见行并单击确定on the prompt。很高兴听到是否有人找到了VBAish方式。
答案 1 :(得分:0)
我想我明白了!
我的代码结果如下,
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。它似乎工作,所以我希望它会做它的事情!