EXCEL函数告诉请进,求统计连续几个相同的单元格 个数 的公式~

效果详见图片,谢谢~

给你段代码,刚写的,还热乎着呢。

代码效果:只要在B2至B300这个区域内的任意一个单元格上单击,D2、F2、D3、F3、D4、F4的结果都会自动重算。

点开发工具---点Visual Basic---点表名---右侧输入代码---关闭Visual Basic。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '注释:要求B301单元格必须是空单元格!
    If Target.Row >= 6 And Target.Row <= 300 And Target.Column = 2 Then
        [D2] = Evaluate("COUNTIF(B6:B300,""上午"")")
        [F2] = Evaluate("COUNTIF(B6:B300,""下午"")")
        r = [B301].End(3).Row
        Dim i, t As Integer
        a = 0
        b = 0
        m = 0
        n = 0
        For i = 6 To r
            If Range("B" & i) = "上午" Then
                If n < b Then
                    n = b
                End If
                a = a + 1
                b = 0
            ElseIf Range("B" & i) = "下午" Then
                If m < a Then
                    m = a
                End If
                b = b + 1
                a = 0
            End If
        Next
        [D3] = m
        [F3] = n
        k = 0
        For t = r To 2 Step -1
            If Range("B" & i) = Range("B" & r) Then
                k = k + 1
            Else
                Exit For
            End If
        Next
        If Range("B" & r) = "上午" Then
            [D4] = k
            [F4] = 0
        ElseIf Range("B" & r) = "下午" Then
            [D4] = 0
            [F4] = k
        End If
    End If
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-22

D2单元格公式:=COUNTIF(B6:B300,"上午")

D3单元格公式:=MAX(FREQUENCY(IF(B6:B300="上午",ROW(A6:A300)),IF(B6:B300<>"上午",ROW(A6:A300))))

然后选定D3单元格后鼠标点击进去上面的公示栏,然后按Ctrl+Shift+Enter/回车三键(按住Ctrl+Shift两键,然后按Enter/回车),直至公式首尾出现{ }

D4单元格公式:=IF(LOOKUP(1,0/(B6:B300<>""),B6:B300)="下午",0,LOOKUP(1,0/(FREQUENCY(IF(B6:B300="上午",ROW(A6:A300)),IF(B6:B300<>"上午",ROW(A6:A300)))<>0),FREQUENCY(IF(B6:B300="上午",ROW(A6:A300)),IF(B6:B300<>"上午",ROW(A6:A300)))))

然后选定D4单元格后鼠标点击进去上面的公示栏,然后按Ctrl+Shift+Enter/回车三键(按住Ctrl+Shift两键,然后按Enter/回车),直至公式首尾出现{ }

E2:E4单元格公式可自行参考。

本回答被提问者采纳
第2个回答  2019-03-22
D4中输入
=IF(LOOKUP("座",B6:B300)="上午",MATCH(TRUE,T(OFFSET(B6,COUNTA(B6:B300)-ROW(INDIRECT("1:"&1+LOOKUP(2,0/(B6:B300<>""),ROW(6:300)-5))),))<>"上午",)-1,0)
同时按下CTRL+SHIFT+回车,输入数组公式。
相似回答