计算找到的第一个非零值之后的所有单元格- Excel



我有这样一个例子:

我需要一个公式来计算第一个非零值之后的所有数字。

取值范围为A1:H4。但是我需要计算每一行A1:H1;A2: H2……A4: H4。

0 0 7 2 0 0 0 9 -数的结果6
5 0 4 0 2 0 0 0 0 -数的结果8
0 0 0 0 0 0 0 7 0 -计数结果2
0 0 0 0 0 0 4 -计数结果1

谢谢!c

如果值是A1:H1, 数组公式**:

=COUNT(H1:INDEX(1:1,MATCH("",T(1/A1:H1),0)))

以A1:H1包含:

为例

0 0 7 2 0 0 0 9

往复

:

1/A1:H1

将返回:

{#DIV/0!,#DIV/0!,0.142857142857143,0.5,#DIV/0!,#DIV/0!,#DIV/0!,0.111111111111111}

对数组应用T函数返回:

{#DIV/0!,#DIV/0!,"","",#DIV/0!,#DIV/0!,#DIV/0!,""}

。原始范围内的所有非零现在都减少为空字符串";全0表示错误。

现在可以对空字符串执行精确匹配,如:

MATCH("",T(1/A1:H1),0)

:

MATCH("",{#DIV/0!,#DIV/0!,"","",#DIV/0!,#DIV/0!,#DIV/0!,""},0)

给:

3

所以:

INDEX(1:1,MATCH("",T(1/A1:H1),0))

:

INDEX(1:1,3)

返回单元格的范围引用:

C1

等等,最后:

COUNT(H1:INDEX(1:1,MATCH("",T(1/A1:H1),0)))

:

COUNT(H1:C1)

中,Excel将把范围引用更正为:

COUNT(C1:H1)

:

6

**数组公式的输入方式与'标准'公式不同。而不是只按ENTER,你先按住CTRL和SHIFT,然后再按ENTER。如果操作正确,您将注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。

=LEN(RIGHT(A1,FIND("1",A1&"1")))

最新更新