如何总结只在Excel中的那些行没有被滤除?

我使用SUM(B1..B20)公式来对列进行求和,但是当我通过相邻列过滤数据时,总和不会更新以仅反映那些未被滤除的行。 如何做到这一点?

您需要使用SUBTOTALfunction。 SUBTOTAL函数忽略被filter排除的行。

公式看起来像这样:

 =SUBTOTAL(9,B1:B20) 

function号码9告诉它在数据范围B1:B20上使用SUMfunction。

如果您通过隐藏行来“ 过滤 ”,则函数编号应该更新为109

 =SUBTOTAL(109,B1:B20) 

函数编号109也用于SUM函数,但隐藏的行被忽略。

如果您没有使用自动filter(即您有手动隐藏的行),则需要使用AGGREGATE函数而不是SUBTOTAL

当您使用自动筛选器来筛选结果时,Excel甚至不会费心去隐藏它们:它只是将行的高度设置为零(至less到2003年,不确定是在2007年)。

所以下面的自定义函数应该给你一个启动器来做你想做的事情(用整数testing,还没有玩过其他的东西):

 Function SumVis(r As Range) Dim cell As Excel.Range Dim total As Variant For Each cell In r.Cells If cell.Height <> 0 Then total = total + cell.Value End If Next SumVis = total End Function 

编辑:

您需要在工作簿中创build一个模块来放入函数,然后您可以像在其他函数(= SumVis(A1:A14))中一样调用它。 如果您需要帮助build立模块,请告诉我。