获取VBA中可见行的总和

Cus*_*omX 6 excel vba excel-2007 excel-vba

我希望能够过滤并显示全局范围和可见(过滤)范围的计数和总和.使用以下代码,我可以显示全局范围的count和sumif:

AtmCount = Application.WorksheetFunction.CountIf(Range("X3:X4533"), ">0")
AtmSum = Application.WorksheetFunction.Sum(Range("X3:X4533"))
Run Code Online (Sandbox Code Playgroud)

通过这部分,我可以显示过滤范围的计数:

AtmCurrentCount = Range("X3:X4533").SpecialCells(xlCellTypeVisible).Count
AtmCurrentSum = ???
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我获得仅有可见行的总和吗?

Jon*_*ell 6

这将做你想要的.将visibleTotal设置为total的相应数据类型,并更改ws和rng对象以匹配工作簿中的对象.

Sub SumVisible()
    Dim ws As Worksheet
    Dim rng As Range
    Dim visibleTotal As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set rng = ws.Range("B1:B7")

    ws.AutoFilterMode = False
    rng.AutoFilter field:=1, Criteria1:=5

    visibleTotal = Application.WorksheetFunction.Sum(rng.SpecialCells(xlCellTypeVisible))
    ' print to the immediate window
    Debug.Print visibleTotal
End Sub
Run Code Online (Sandbox Code Playgroud)

如果您只想对过滤范围的一部分求和(例如,您在列A上过滤但希望列B的总和),请参阅此问题和答案:复制/粘贴/计算过滤表的一列中的可见单元格.