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)非常易于安装和使用:

  • ALT-F11将显示VBE窗口
  • ALT-I ALT-M打开一个新模块
  • 粘贴内容并关闭VBE窗口
  • 如果保存工作簿,则自定义项将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    要删除自定义项,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 使用Excel中的自定义项,请执行以下操作:

    =连续(A1:Z1)

    要了解有关宏的更多信息,请参阅:

    有关自定义项的详细信息,请参见:


    必须启用宏才能使其工作

    只要数据集没有以列
    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