Excel:如何在过滤后的 "Named Ranges" 中计算 TRUE

Excel: How to Count TRUE in Filtered "Named Ranges"

经过长时间的搜索,我还没有找到答案。我觉得我问的问题很不寻常,比如 "How do you count unicorns?"

所以这里是:

你如何在 Excel... 中计算 FILTERED "named range" 中 TRUE 单元格的数量?

我找到了一个可以指定列 - 行索引的方法,例如 A2:A100。

=SUMPRODUCT(SUBTOTAL(3,OFFSET(A2:A100,ROW(A2:A100)-MIN(ROW(A2:A100)),,1)), --(A2:A100=TRUE))

这对我不起作用。必须命名范围。我也不能使用辅助列。我宁愿不使用 VBA。并且...还有一个请求需要一些额外的魔法:我的命名范围是整个列,headers 和所有。无论如何都可以使用 SUBTOTAL。

您使用的 Excel 是什么版本? 2013年,我能够正常使用它。

我在 A2:A100 中填充了 50 个 TRUE 和 49 个 FALSE 值,在 B2:B100 中填充了 99 个 RAND() 值。然后我过滤了 B 列中的各种数字过滤器,下面的所有公式都正常工作,只计算 A 列中可见的 TRUE 值。

示例 1:原始公式

=SUMPRODUCT(SUBTOTAL(3,OFFSET(A2:A100,ROW(A2:A100)-MIN(ROW(A2:A100)),,1)), --(A2:A100=TRUE))

示例 2:非动态精确命名范围

范围名为 "NonDynamic" 并设置为:

=Sheet1!$A:$A0

公式:

=SUMPRODUCT(SUBTOTAL(3,OFFSET(NonDynamic,ROW(NonDynamic)-MIN(ROW(NonDynamic)),,1)), --(NonDynamic=TRUE))

示例 3:动态命名范围

范围名为 "Dynamic" 并设置为:

=OFFSET(Sheet1!$A,1,0,COUNTA(Sheet1!$A:$A)-1)

公式:

=SUMPRODUCT(SUBTOTAL(3,OFFSET(Dynamic,ROW(Dynamic)-MIN(ROW(Dynamic)),,1)), --(Dynamic=TRUE))

注意:动态命名范围是否适合您?它们通常比引用整个列更有效,尤其是在第一行和最后一行数据之间的列中没有空白值的情况下。

示例 4:整个列的非动态命名范围

范围名为 "WholeColumn" 并设置为:

=Sheet1!$A:$A

公式:

=SUMPRODUCT(SUBTOTAL(3,OFFSET(WholeColumn,ROW(WholeColumn)-MIN(ROW(WholeColumn)),,1)), --(WholeColumn=TRUE))

所有四个示例在 Excel 2013 年产生完全相同的结果。例如,我过滤 B 列 > 0.5;这留下了总共 50 个可见的 26 个 TRUE 值。所有四个公式都从 50 更改为 26。