簡體   English   中英

在Excel VBA中應用過濾器后計算選定單元格的范圍

[英]count the selected range of cells after applying filter in excel vba

感謝您查看我的情況:)應用過濾器后,僅對特定列中的選定行進行計數的嘗試非常混亂。 應用過濾器后,我將為一列計算選定的行,並報告所有行。 過濾后的行為21,但似乎包括所有行。 我只希望所選的行在過濾器后計數。

Sub Report()

    Dim sh As Worksheet
    Dim k As Long

    Set sh = ThisWorkbook.Sheets("Testing")

    sh.Range("F21").Activate

    ActiveSheet.Range("F" & Rows.Count).End(xlUp).AutoFilter Field:=6, Criteria1:="Fatal"

    ActiveSheet.Range("f21", ActiveSheet.Range("f21").End(xlDown)).Select

    MsgBox ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count
    'FatCnt = Range("F21").Rows.SpecialCells(xlCellTypeVisible).Count
    'FatCnt = Selection.Count

    'MsgBox FatCnt    

    Selection.AutoFilter

End Sub

使用單元格中的公式來獲取“致命”計數

=COUNTIF(F:F,"Fatal")

要么

Sub Report()
    With ThisWorkbook.Worksheets("Testing")
        fatalcount = WorksheetFunction.CountIf(Range("F:F"), "Fatal")
    End With
End Sub

工作表的本機SUBTOTAL函數可以很好地對過濾的單元格進行計數。

Sub Report()
    Dim k As Long

    With ThisWorkbook.Worksheets("Testing")
        If .AutoFilterMode Then .AutoFilterMode = False
        With .Range(.Cells(21, "F"), .Cells(Rows.Count, "F").End(xlUp))
            .AutoFilter Field:=1, Criteria1:="Fatal"
            k = Application.Subtotal(103, .Cells) - 1 'minus 1 for the header
            Debug.Print k
        End With
        If .AutoFilterMode Then .AutoFilterMode = False
    End With

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM