我有这样一个例子:
我需要一个公式来计算第一个非零值之后的所有数字。
取值范围为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")))