在filterlist Excel之后的Countif

时间:2014-09-19 16:05:17

标签: excel excel-formula excel-2007

我想看一个如何让这个公式正常运作的实例

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

我想要实现的是计算值大于的范围内的所有单元格 零,但我需要在应用过滤器后才能正常工作。我已经看过几个例子并且没有使用小数字fx。

提前致谢,任何帮助!

1 个答案:

答案 0 :(得分:2)

工作示例:

    O       P
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中的公式在数组(矩阵)上下文中。这意味着它们的处理就像它们在数组公式中一样使用。

在数组上下文{ROW($P$8:$P$20)-ROW($P$7)}获取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,否则为0。

所以SUMPRODUCT导致

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

{($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,...})

问候

阿克塞尔