您使用的是哪个版本的 Excel? 2013年,我可以正常工作了。
我用 50 个 TRUE 和 49 个 FALSE 值填充 A2:A100,用 99 个 RAND() 值填充 B2:B100。然后我过滤了 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$2:$A$100
公式:
=SUMPRODUCT(SUBTOTAL(3,OFFSET(NonDynamic,ROW(NonDynamic)-MIN(ROW(NonDynamic)),,1)), --(NonDynamic=TRUE))
示例 3:动态命名范围
名为“动态”的范围并设置为:
=OFFSET(Sheet1!$A$1,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。