Excel 计数通过条件的连续值的首次出现次数
在下面的示例数据中,我试图设置一个计数器,该计数器将返回连续负值的数目,但只计算第一次出现的次数Excel 计数通过条件的连续值的首次出现次数,excel,excel-formula,Excel,Excel Formula,在下面的示例数据中,我试图设置一个计数器,该计数器将返回连续负值的数目,但只计算第一次出现的次数 32 19 4 293 -30 -2 -5 -25 29 58 74 -90 -73 -62 我希望函数在这种情况下返回4(计算从-30到-25的连续负值,并完全忽略从-90到-62的值) 我得到了第一个负值的索引,但我不知道如何从那里计算连续的值。有人能帮忙吗 编辑: 到目前为止,我有以下公式: =COUNTIF(INDEX(R3:EQ3,MATCH(TRUE,INDEX(R3:EQ3<0
32 19 4 293 -30 -2 -5 -25 29 58 74 -90 -73 -62
我希望函数在这种情况下返回4(计算从-30到-25的连续负值,并完全忽略从-90到-62的值)
我得到了第一个负值的索引,但我不知道如何从那里计算连续的值。有人能帮忙吗
编辑:
到目前为止,我有以下公式:
=COUNTIF(INDEX(R3:EQ3,MATCH(TRUE,INDEX(R3:EQ3<0,),0)),"<0")
请尝试以下用户定义的函数:
Public Function consec(rng As Range) As Long
Dim r As Range, StartCount As Boolean
consec = 0
StartCount = False
For Each r In rng
If StartCount Then
If r.Value < 0 Then
consec = consec + 1
Else
Exit Function
End If
Else
If r.Value < 0 Then
StartCount = True
consec = 1
End If
End If
Next r
End Function
Public Function concer(rng作为范围)尽可能长
Dim r作为范围,StartCount作为布尔值
conce=0
StartCount=False
对于rng中的每个r
如果开始计算,那么
如果r.值小于0,则
连续=连续+1
其他的
退出功能
如果结束
其他的
如果r.值小于0,则
StartCount=True
conce=1
如果结束
如果结束
下一个r
端函数
用户定义函数(UDF)非常易于安装和使用:
必须启用宏才能使其工作 只要数据集没有以列
XFD
(最后一列)结尾的第一个负值实例,就可以使用以下数组公式:
=MATCH(TRUE,INDEX(1:1,1,MATCH(TRUE,1:1<0,0)):INDEX(1:1,1,16384)>=0,0)-1
=匹配(真,索引(1:1,1,匹配)(真,1:1=0,0)-1
将公式中的行引用更改为要测试的行
未经修改,此公式不能与正在检查的数据输入在同一行中,否则将出现循环引用错误
要输入/确认数组公式,请在按住ctrl+shift键的同时按enter键。如果操作正确,Excel将在公式栏中看到的公式周围放置大括号{…}
我想和罗恩的公式一样,但这里没有什么解释 考虑到您的数据位于单元格A1:O1中,并且在范围的中间或末端有一些正值,那么此数组公式将起作用 =匹配(真,间接)(地址1,匹配(真,A1:O10,0)-1
MATCH(TRUE,A1:o1是否要计算唯一值?计数到1并不是真正的计数。:-)此数据位于何处?请显示您尝试过的内容。听起来这只是一个“删除重复项”或“透视表”的作业,尽管还有其他几种方法,如“计数如果”或“查找”.嗨,如果我的解释没有帮助,很抱歉。我想找到第一个负值(在本例中为-30)然后从这里开始计算之后出现的任何负值。因此,计算-30,-2,-5和-25=4。下一个值是29,它是正值,所以这项工作完成了,函数应该返回4。我不关心之后出现的任何其他负值。请包括你的公式尝试,作为你的问题的答案。解释什么是无效的king。我已经编辑了我的问题,并试图让它尽可能清晰。对不起,我不知道如何更好地解释它。您有什么版本的Excel?非常好,谢谢。为了让它在同一行中工作,我已将范围从S:XFD改为S(在我的情况下,S列可以是任意列)我不得不将16384改为16000,因为否则公式是#REFing。以防万一其他人也有同样的问题。@fejk很高兴听到它在工作。对于从a列以外的范围,列参数确实需要减少。在您的情况下,最大值将是
列(S1:XFD1)
=16366
。换句话说,它是结果数组中的列数。
=MATCH(TRUE,INDEX(1:1,1,MATCH(TRUE,1:1<0,0)):INDEX(1:1,1,16384)>=0,0)-1