Coulist在filterlist Excel以后

我想看看如何让这个公式正确工作的一个工作的例子

= SUMPRODUCT(小计(3,OFFSET($ P $ 7,ROW($ P $ 8:$ P $ 5500)-ROW($ P $ 7),, 1)), – ($ P $ 7:$ P $ 5500 = “74” ))

我试图实现的是计数范围内的所有单元格的值大于零,但我需要得到这个工作后,我应用filter。 我已经看到了几个例子,并没有得到它的工作,与小计FX。

在此先感谢您的帮助!

工作示例:

OP 4 5 6 6 7 Filter Data 8 1 74 9 0 74 10 1 74 11 0 74 12 1 74 13 0 74 Formula in P5: =SUMPRODUCT(SUBTOTAL(103,OFFSET($P$7,ROW($P$8:$P$20)-ROW($P$7),,1)),--($P$8:$P$20=74)) 

现在你可以过滤列O和P5只计数可见74。

使用SUBTOTAL中的函数103,我实际上只计数可见的单元格。 这意味着,手动隐藏的单元格也不计算在内。 使用函数3,只有出过滤的单元格不计算在内。 如果手动隐藏单元格,则会计数,即使它们不可见。

而我已经使用了值74而不是文本“74”。 所以在我的例子中,列P包含数字,而不是文本。

怎么运行的:

SUMPRODUCT中的公式是在数组(matrix)上下文中。 这意味着它们就像在数组公式中一样被处理。

在数组上下文中ROW($P$8)-ROW($P$7) = 1, ROW($P$9)-ROW($P$7) = 2, ROW($P$10)-ROW($P$7) = 3等等。

OFFSET($P$7,1,,1)将获得$ P $ 7 + 1Row = $ P $ 8, OFFSET($P$7,2,,1)将获得$ P $ 7 + 2Row = $ P $ 9等等。

所以{OFFSET($P$7,ROW($P$8:$P$20)-ROW($P$7),,1)}得到{$P$8,$P$9,$P$10,...}

SUBTOTAL(103, {$P$8,$P$9,$P$10,...}) ,如果{$P$8,$P$9,$P$10,...}可见,则计数为1,否则{$P$8,$P$9,$P$10,...} 0 。

所以SUMPRODUCT的结果

 SUMPRODUCT({1,0,1,0,1,0,0,...}, --($P$8:$P$20=74)) 

{TRUE,TRUE,TRUE,FALSE,TRUE,...}取决于$ P $ 8:$ P $ 20 = 74。 --*-1*-1 )在数字上下文中得到这个,所以TRUE = 1和FALSE = 0。

所以SUMPRODUCT最终导致

 SUMPRODUCT({1,0,1,0,1,0,0,...}, {1,1,1,1,1,1,0,...}) 

问候

阿克塞尔