如何在Excel中连续计算单元格,但仅对相邻单元格计数一次

时间:2018-07-28 02:18:18

标签: excel vba

嗨,我有一个具有以下结构的电子表格:-

Example Spreadsheet

我需要帮助找出公式或VBA函数,以计算“活动阻止计数”列。

这是日期列中非空白连续单元格的计数。例如,项目5有4个星期的活动,但只有3个连续的活动区块。

任何想法都受到热烈欢迎;-)。我在周末工作,这让我发疯了!

谢谢

乔纳森

2 个答案:

答案 0 :(得分:2)

只需遍历该范围内的所有单元格,并注意是否填充了这些单元格即可。

Function countActivityBlock(rng As Range) As Long

    Dim r As Range, bNum As Boolean

    If Not IsEmpty(rng.Cells(1)) Then
        bNum = True
        countActivityBlock = 1
    End If

    For Each r In rng
        If Not IsEmpty(r) And Not bNum Then
            bNum = Not bNum
            countActivityBlock = countActivityBlock + 1
        ElseIf IsEmpty(r) And bNum Then
            bNum = Not bNum
        End If
    Next r

End Function

enter image description here


SpecialCells(xlCelltypeConstants,xlNumbers)在UDF中不起作用。

答案 1 :(得分:0)

执行此操作的公式方法如下:使用FREQUENCY

=SUM(--(FREQUENCY(IF(D2:P2<>"",COLUMN(D2:P2)),IF(D2:P2="",COLUMN(D2:P2)))>0))

必须使用 Ctrl Shift Enter

作为数组公式输入

请参见ThisThis

enter image description here