Excel公式:仅使用条件计算可见行

220 多个excel快捷键速查表,适用Windows和Mac。工作效率提高10倍。免费下载>>>

下载 “excel快捷键速查表” Excel快捷键速查表.zip – 已下载54次 – 3 MB

Excel formula: Count visible rows only with criteria

通用公式

=SUMPRODUCT((range=criteria)*(SUBTOTAL(103,OFFSET(range,rows,0,1))))
概括 

要仅使用条件计算可见行,您可以使用基于SUMPRODUCTSUBTOTALOFFSET的相当复杂的公式。在所示示例中,C12 中的公式为:

=SUMPRODUCT((C5:C8=C10)*(SUBTOTAL(103,OFFSET(C5,ROW(C5:C8)MIN(ROW(C5:C8)),0))))

前言

SUBTOTAL 函数可以轻松生成隐藏行和非隐藏行的总和和计数。但是,在没有帮助的情况下,它无法处理COUNTIFSUMIF等标准。一种解决方案是使用 SUMPRODUCT 来应用 SUBTOTAL 函数(通过 OFFSET)和标准。这种方法的细节如下所述。

解释 

这个公式的核心是在 SUMPRODUCT 中设置两个数组。第一个数组应用条件,第二个数组处理可见性:

=SUMPRODUCT(criteria*visibility)

该标准适用于部分公式:

=(C5:C8=C10)

这会生成一个这样的数组:

{FALSE;TRUE;FALSE;TRUE}

其中 TRUE 表示“符合标准”。请注意,因为我们在这个数组上使用了乘法 (*),所以 TRUE FALSE 值将通过数学运算自动转换为 1 和 0,所以我们最终得到:

{0;1;0;1}

使用 SUBTOTAL 应用可见性过滤器,函数编号为 103

SUBTOTAL 能够在运行计算时排除隐藏行,因此我们可以在这种情况下使用它来生成“过滤器”以排除 SUMPRODUCT 中的隐藏行。但问题是 SUBTOTAL 返回一个数字,而我们需要一个结果数组才能在 SUMPRODUCT 中成功使用它。诀窍是使用 OFFSET 为 SUBTOTAL 每行提供一个引用,这样 OFFSET 将每行返回一个结果。

当然,这需要另一个技巧,即给 OFFSET 一个数组,其中每行包含一个数字,从零开始。我们使用构建在 ROW 函数上的表达式来做到这一点:

=ROW(C5:C8)MIN(ROW(C5:C8)

这将生成一个这样的数组:

{0;1;2;3}

总之,第二个数组(使用 SUBTOTAL 处理可见性)是这样生成的:


=SUBTOTAL(103,OFFSET(C5,ROW(C5:C8)MIN(ROW(C5:C8)),0))
=SUBTOTAL(103,OFFSET(C5,{0;1;2;3},0))
=SUBTOTAL(103,{“East”;“West”;“Midwest”;“West”})
={1;0;1;1}

最后,我们有:

=SUMPRODUCT({0,1,0,1}*{1;0;1;1})

返回 1。

多个标准

您可以扩展公式以处理多个条件,如下所示:

=SUMPRODUCT((rng1=criteria1)*(rng2=criteria2)*(SUBTOTAL(103,OFFSET(rng,rows,0,1))))

汇总结果

要返回值的总和而不是计数,您可以调整公式以包含总和范围:

=SUMPRODUCT(criteria*visibility*sumrange)

标准和可见性数组的工作方式与上面解释的相同,不包括不可见的单元格。如果您需要部分匹配,您可以使用 ISNUMBER + SEARCH 构造一个表达式

220 多个excel快捷键速查表,适用Windows和Mac。工作效率提高10倍。免费下载>>>

下载 “excel快捷键速查表” Excel快捷键速查表.zip – 已下载54次 – 3 MB

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注