如何只将excel中的那些行与过滤掉?

时间:2009-04-17 09:02:29

标签: excel excel-formula

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

3 个答案:

答案 0 :(得分:99)

您需要使用 SUBTOTAL 功能。 SUBTOTAL 功能会忽略已被过滤器排除的行。

公式如下:

=SUBTOTAL(9,B1:B20)

功能编号 9 ,告诉它在数据范围 B1:B20 上使用 SUM 功能。

如果您通过隐藏行“过滤”,则应将功能编号更新为 109

=SUBTOTAL(109,B1:B20)

功能编号 109 也适用于 SUM 功能,但会忽略隐藏的行。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

当您使用自动过滤器来过滤结果时,Excel甚至懒得隐藏它们:它只是将行的高度设置为零(至少到2003年,在2007年不确定)。

因此,以下自定义函数应该为您提供一个启动器来执行您想要的操作(使用整数测试,没有使用其他任何东西):

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

编辑:

您需要在工作簿中创建一个模块才能放入该函数,然后您可以像在任何其他函数上一样在工作表上调用它(= SumVis(A1:A14))。如果您需要设置模块的帮助,请告诉我。