要在2个单独的列上应用2个单独的过滤器,请计算行数

时间:2016-08-08 04:17:17

标签: vba excel-vba excel

With Sheets("LifeTimeData")
    .Range("A1:BB" & lastrow).AutoFilter Field:=21, Criteria1:=xlFilterLastMonth, Operator:=xlAnd
    .Range("A1:BB" & lastrow).AutoFilter Field:=16, Criteria1:="*" & "Deposit", Operator:=xlFilterDynamic
    Set r = Intersect(.AutoFilter.Range, .Range("A:A"))
    Filtred_Rows_Count = Application.WorksheetFunction.Subtotal(103, r) - 1

    'Worksheets("LifeTimeData").AutoFilterMode = False
    'Sheets("Overview").Range("G16") = Filtred_Rows_Count MsgBox Filtred_Rows_Count
End With

2 个答案:

答案 0 :(得分:1)

使用它:

Dim lastRow As Long, Filtred_Rows_Count As Long
Dim R As Range

With Sheets("LifeTimeData")
    lastRow = .Cells(.Rows.Count, "P").End(xlUp).row
    With .Range("A1:BB" & lastRow)
        .AutoFilter field:=21, Criteria1:=xlFilterLastMonth, Operator:=xlFilterDynamic
        .AutoFilter field:=16, Criteria1:="*" & "Deposit"
        Set R = Intersect(.SpecialCells(xlCellTypeVisible), .Range("A:A"))
    End With
    Filtred_Rows_Count = Application.WorksheetFunction.Subtotal(103, R) - 1

    'Worksheets("LifeTimeData").AutoFilterMode = False
    'Sheets("Overview").Range("G16") = Filtred_Rows_Count MsgBox Filtred_Rows_Count
End With

答案 1 :(得分:0)

终于想通了。 : - )

With Sheets("LifeTimeData")
    .Range("A1:BB" & lastrow).AutoFilter Field:=16, Criteria1:="*" & Trim("Deposit Received") & "*"
    .Range("A1:BB" & lastrow).AutoFilter Field:=21, Criteria1:=xlFilterLastMonth

    Set r = Intersect(.AutoFilter.Range, .Range("A:A"))
    Filtred_Rows_Count = Application.WorksheetFunction.Subtotal(103, r) - 1
    Worksheets("LifeTimeData").AutoFilterMode = False
    Sheets("Overview").Range("H16") = Filtred_Rows_Count
End With