如何在excel中动态使用基于过滤器的公式?

时间:2017-03-24 16:58:13

标签: excel excel-formula

我很难在不使用SUM函数的情况下弄清楚如何获得总值。

示例:

enter image description here

我可以使用SUM函数获得SumSQ的总值,就像我在图像中一样。

预期值为:30323295

SumSQ公式:SumSQ =(SD ^ 2 *计数*(计数-1)+(SumX ^ 2))/计数

在excel中:SumSQ =(SUMSQ(D3)* B3 *(B3-1)+(SUMSQ(C3)))/ B3

请注意,SumSQ是辅助列。

我想要的是避免使用辅助列,在本例中为SumSQ。但我仍然希望得到总值30323295。

所以基本上这就是没有过滤器的样子:

enter image description here

Total SumSQ的公式:SumSQ =(total_SD ^ 2 * total_count *(total_count - 1)+(total_SumX ^ 2))/ total_count

请注意,这必须是基于A列过滤器的动态。

PC_Number中的过滤器示例:

enter image description here

这意味着它应该只计算基于过滤器的可见内容。

我尝试使用OFFSET(),MIN()和ROW()添加的SUBTOTAL()函数,但它不会像我想要的那样工作。

这是我目前所拥有的:

--start

=SUMPRODUCT(((SUBTOTAL(9,OFFSET(U5:U256,ROW(U5:U256)-MIN(ROW(U5:U256)),,1))^2)*SUBTOTAL(9,OFFSET(M5:M256,ROW(M5:M256)-MIN(ROW(M5:M256)),,1))*(SUBTOTAL(9,OFFSET(M5:M256,ROW(M5:M256)-MIN(ROW(M5:M256)),,1))-1)+((SUBTOTAL(9,OFFSET(Q5:Q256,ROW(Q5:Q256)-MIN(ROW(Q5:Q256)),,1))*SUBTOTAL(9,OFFSET(M5:M256,ROW(M5:M256)-MIN(ROW(M5:M256)),,1)))^2))/SUBTOTAL(9,OFFSET(M5:M256,ROW(M5:M256)-MIN(ROW(M5:M256)),,1)))

--end

这是使用我具有的公式的输出:

enter image description here

总价值差异很大。

不确定我是否解释得很好,但这是它的要点。

2 个答案:

答案 0 :(得分:3)

您需要使用数组公式,我不相信您可以使用SUMSQ()。以下产生了预期的结果。请注意不要使用Shift + Ctrl + Enter输入此内容。

{=SUM(((D3:D9)^2 * (B3:B9)*((B3:B9)-1)+((C3:C9)^2))/B3:B9)}

答案 1 :(得分:3)

普通公式,不是数组公式,仅使用SumProduct

=SUMPRODUCT((D3:D9*D3:D9*B3:B9*(B3:B9-1)+(C3:C9*C3:C9))/B3:B9)

OR

=SUMPRODUCT((D3:D9^2*B3:B9*(B3:B9-1)+(C3:C9^2))/B3:B9)

编辑1:过滤

要按column A添加一些过滤,假设您必须按照A1中输入的值进行过滤:

=SUMPRODUCT((A3:A9 = $A$1)*((D3:D9^2*B3:B9*(B3:B9-1)+(C3:C9^2))/B3:B9))

编辑2:为了使过滤成为可选,下一个公式应用过滤,除非 A1为空,在这种情况下它会占所有行:

=SUMPRODUCT((A3:A9=IF(ISBLANK(A1),A3:A9,A1))*((D3:D9^2*B3:B9*(B3:B9-1)+(C3:C9^2))/B3:B9)) 

编辑3:仅考虑可见(未滤除)的行:

=SUMPRODUCT(SUBTOTAL(2, OFFSET(B1, ROW(B3:B9)-1,0))*((D3:D9^2*B3:B9*(B3:B9-1)+C3:C9^2)/B3:B9))

想法是,如果单元格可见(隐藏),则单个和数字单元格上的subtotal(2)将返回1(0)。