Excel: contar células pesadas

Excel: contar células pesadas

Tengo una hoja de cálculo de Excel, que es mi horario. esto significa que tengo algunas tareas, que casi siempre es una celda conectada, a veces conecto 20 celdas, a veces solo dos.Ejemplo

Como cada célula dura una hora, quería contar el recuento de células pesadas. Esto significa: si tengo una celda que tiene solo una celda, cuenta como una, si tengo 3 conectadas contará como 3. Entonces, en la imagen de ejemplo, el recuento de celdas será S1: 3, S2: 4, S3: 2, T4:6

He estado buscando durante mucho tiempo, pero no encontré ninguna función que resuelva el problema. Lo mejor que he encontrado es =countif(B4:H19, "Subject1"), pero aquí una celda basada en tres celdas conectadas cuenta como una. ¿Podrías ayudarme a resolver este problema?

¡Gracias por tu respuesta de antemano!

Respuesta1

En realidad, la captura de pantalla que compartió con nosotros tiene celdas fusionadas y no fusionadas, por lo tanto, en lugar de cualquier fórmula, este problema necesita una macro VBA.

ingrese la descripción de la imagen aquí


   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

Cómo funciona:

  • O presioneAlt+F11o seleccione la TAB y luegoRhaga clic derecho y desde el menú presioneVVer código.

  • Ccopiar yPAGGuarde estas macros de VBA.

  • PrensaAlt+Qpara volver a la Hoja.

  • Ahora guarde el libro de trabajo como archivo habilitado para macros *.xlsm.

  • Ingrese esta fórmula en la celda K2y complétela.

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

  • Ajuste las referencias de celda según sea necesario.

información relacionada