Excel:计数称重细胞

Excel:计数称重细胞

我有一个 Excel 电子表格,里面是我的时间表。这意味着,我有一些任务,它们几乎总是一个连接的单元格,有时我连接 20 个单元格,有时只连接 2 个单元格。例子

由于每个细胞都是一小时,所以我想计算一下称重的细胞数。这意味着:如果我有一个只有一个细胞的细胞,它算作一个,如果我有 3 个连接的细胞,它将算作 3 个。因此在示例图片中,细胞数应为 S1:3、S2:4、S3:2、S4:6

我搜索了很长时间,但还没有找到任何可以解决这个问题的函数。我找到的最好的方法是=countif(B4:H19, "Subject1"),但这里基于三个相连单元格的单元格算作一个。你能帮我解决这个问题吗?

提前感谢您的回答!

答案1

实际上,您与我们分享的屏幕截图包含合并单元格和非合并单元格,因此这个问题需要 VBA 宏而不是任何公式。

在此处输入图片描述


   Function MergedCellCount(ByRef Rng As Range, ByVal Criteria As Variant)

    Dim c       As Long
    Dim Cell    As Range
    Dim n       As Long
    Dim r       As Long
    
        Application.Volatile
        
        For c = 1 To Rng.Columns.Count
            For r = 1 To Rng.Rows.Count
                Set Cell = Rng.Cells(r, c)
                If Cell.MergeCells = True And (Rng.Columns(c).Column = Cell.MergeArea.Column) Then
                    If Cell = Criteria Then
                        n = n + Cell.MergeArea.Count
                        r = r + (Cell.MergeArea.Rows.Count - 1)
                    End If
                End If
            Next r
        Next c
        
        MergedCellCount = n
        
    End Function

    Function unMergedCellCount(ByRef Rng As Range, ByVal Criteria As Variant)

    Dim c       As Long
    Dim Cell    As Range
    Dim n       As Long
    Dim r       As Long
    
        Application.Volatile
        
        For c = 1 To Rng.Columns.Count
            For r = 1 To Rng.Rows.Count
                Set Cell = Rng.Cells(r, c)
                If Cell.MergeCells <> True And (Rng.Columns(c).Column = Cell.MergeArea.Column) Then
                    If Cell = Criteria Then
                        n = n + Cell.MergeArea.Count
                        r = r + (Cell.MergeArea.Rows.Count - 1)
                    End If
                End If
            Next r
        Next c
        
        unMergedCellCount = n
        
End Function

怎么运行的:

  • 按下Alt+F11或选择 TAB 然后R右键单击并从菜单中选择查看代码。

  • C奥皮&保存这些 VBA 宏。

  • Alt+Q返回工作表。

  • 现在将工作簿保存为启用宏的文件*.xlsm

  • 在单元格中输入此公式K2并向下填充。

    =MergedCellCount(H$2:H$17,J2)+unMergedCellCount(H$2:H$17,J2)

  • 根据需要调整单元格引用。

相关内容