计数行并过滤,然后使用VBA删除过滤的行

任何人都可以告诉我如何计算Excel电子表格中的总行数,然后dynamic地传递值?

最后一行不是2691的值,我想在设置filter时通过lastRowvariables。 然后,我想再次统计总行数,然后从电子表格中删除这些行。

 With ActiveSheet lastRow = .Cells(.Rows.count, "A").End(xlUp).Row End With Range("A2").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$P$2691").AutoFilter Field:=3, Criteria1:= _ "=ABC", Operator:=xlOr, Criteria2:="=XYZ" Rows("285:285").Select Range(Selection, Selection.End(xlDown)).Select Selection.Delete Shift:=xlUp 

关于这个问题:

而不是最后一行2691的值,我想通过lastRowvariables..

具体的答案是设置Range以使用您在对范围中的行进行计数时设置的lastRowvariables进行过滤,例如:

 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 

尝试下面的代码 – 每一步都清楚地评论。

 Option Explicit Sub Test() Dim ws As Worksheet Dim lastRow As Long Dim rng As Range 'set sheet reference Set ws = ActiveSheet 'turn off autofilter ws.AutoFilterMode = False 'get last row lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 'set range to filter Set rng = ws.Range("A1:C" & lastRow) 'set filter rng.AutoFilter Field:=3, Criteria1:="=ABC", Operator:=xlOr, Criteria2:="=XYZ" 'delete visible rows rng.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete 'show remaining rows by removing autofilter ws.AutoFilterMode = False End Sub