【发布时间】:2019-01-18 20:20:38
【问题描述】:
我正在使用基于SUMPRODUCT、SUBTOTAL 和OFFSET 的公式。仅使用条件启用可见行计数。我在一个简单的示例数据上进行了尝试,如下所示。数据从B4 范围内的B4:B12 Header B3 开始:
B Column
HD
2
2
4
6
2
1
8
9
2
公式是:
=SUMPRODUCT((B4:B12=B4)*(SUBTOTAL(103,OFFSET(B4,ROW(B4:B12)-MIN(ROW(B4:B12)),0))))
对于值为 2,它给出了 4 个计数的正确结果。 我去评估公式以完全理解其逻辑。我可以理解其逻辑的主要部分,但某些步骤对我来说不是很清楚。我正在用我的 cmets 重现下面的评估步骤。
步骤-1
=SUMPRODUCT(({2;2;4;6;2;1;8;9;2}=2)*(SUBTOTAL(103,OFFSET(B4,ROW(B4:B12)-MIN(ROW(B4:B12)),0))))
好的
步骤-2
=SUMPRODUCT(({TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE})*(SUBTOTAL(103,OFFSET(B4,ROW(B4:B12)-MIN(ROW(B4:B12)),0))))
好的
第三步
=SUMPRODUCT(({TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE})*(SUBTOTAL(103,OFFSET(B4,ROW(B4:B12)-MIN(ROW(B4:B12)),0))))
好的
第四步
=SUMPRODUCT(({TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE})*(SUBTOTAL(103,OFFSET($B$4,{4;5;6;7;8;9;10;11;12}-MIN({4;5;6;7;8;9;10;11;12}),0))))
好的
第五步
=SUMPRODUCT(({TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE})*(SUBTOTAL(103,OFFSET($B$4,{4;5;6;7;8;9;10;11;12}-4),0))))
好的
第六步
=SUMPRODUCT({TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE}*(SUBTOTAL(103,OFFSET($B$4,{0;1;2;3;4;5;6;7;8},0))))
为什么是{0;1;2;3;4;5;6;7;8} ??
第七步
=SUMPRODUCT({TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE}*(SUBTOTAL(103,{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;})))
为什么是{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;} ??
第八步
=SUMPRODUCT({TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE}*({1;1;1;1;1;1;1;1;1}))
如何1 而不是#VALUE!
STEP-9
=SUMPRODUCT({1;1;0;0;1;0;0;0;1})
好的
步骤-10
4
好的
我对以下几点不太清楚
第 6 步:为什么要{0;1;2;3;4;5;6;7;8}
第 7 步:为什么要{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;}
第 8 步:如何使用 1 代替 #VALUE!
希望有人帮助澄清这些提及点背后的逻辑。请原谅我就这么琐碎的事情问清楚。
【问题讨论】:
-
第 6 步是
ROW(B4:B12)-MIN(ROW(B4:B12)的结果,因此您从行中取出 4 以获得基于 0 的索引 -
就 STEP 7 而言 - 我会假设
B$4$:B$12都会导致 #VALUE 错误? - 如果不是,您能否确认其中的值或如果它是敏感数据则喜欢值 -
我在功能区的“公式”选项卡中借助“评估公式”的帮助下,通过对公式评估期间的各个步骤进行截图来重现步骤。除了我提到的以外,我们没有得到任何值。我已经在问题本身的第一段中提到了我使用的数据值。感谢您对此事的关注和时间。
标签: excel