【问题标题】:How can I count cells in a row but only count adjacent cells once in Excel如何计算一行中的单元格,但在 Excel 中只计算相邻单元格一次
【发布时间】:2018-07-28 02:18:17
【问题描述】:

您好,我有一个结构如下的电子表格:-

我需要帮助找出公式或 VBA 函数来计算活动块计数列。

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

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

谢谢

乔纳森

【问题讨论】:

  • 这些键入的值或公式是否返回每周数字?
  • Week Count 是一个公式 =count(带日期的列范围),而 Activity Block Count 只是一个输入值,我想用公式或函数替换它。顶部的日期将按日期顺序排列,但可能不是连续的。这能回答你的问题吗?
  • 我指的是几周内的数字,例如 120,987 或 23,184。
  • 它们只是值,而不是公式结果

标签: excel vba


【解决方案1】:

只需遍历范围内的单元格,注意单元格是否已填充的变化。

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


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

【讨论】:

  • 如果我在任何行中使用公式 =countActivityBlock(E8:Q8) 只会返回 1。有什么想法吗?
  • 看起来这行不通。空白单元格被读取为 xlNumbers,这是我没有预料到的。我会再进行一些测试。
  • 这适用于子窗口或即时窗口,但显然不适用于 UDF。
  • 好酷 - 谢谢!我试图遍历范围内的单元格,但无法定义运行计数的逻辑,如果它们有值但与另一个具有值的单元格相邻,则不计算单元格的计数
  • 参见上面的修订版。
【解决方案2】:

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

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

必须使用 CtrlShiftEnter

作为数组公式输入

ThisThis

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多