获取VBA中可见行的总和

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

AtmCount = Application.WorksheetFunction.CountIf(Range("X3:X4533"), ">0") AtmSum = Application.WorksheetFunction.Sum(Range("X3:X4533")) 

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

 AtmCurrentCount = Range("X3:X4533").SpecialCells(xlCellTypeVisible).Count AtmCurrentSum = ??? 

任何人都可以帮助我只有可见行总和

这将做你想要的。 将visibleTotal设置为合适的数据types,然后更改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 

如果你只想总结过滤范围的一部分(例如你过滤列A,但想要列B的总和),看到这个问题和答案: 复制/粘贴/计算过滤表的一列中的可见单元格 。

如果你只想要总和,而不是sumif

 AtmCurrentSum = application.worksheetfunction.subtotal(9, Range("X3:X4533"))