Contar conjunto de celdas dependiendo del valor de la primera columna - EXCEL

Tengo un problemilla con excel. Tengo una tabla con varias columnas, y me interesaría que en la ultima columna se contaran todas las celdas que contengan un valor (da igual cual) dependiendo del valor de la primera columna (y este puede estar repetido) y me lo muestre en una segunda tabla donde el indice de los valores de la primera columna están desordenados.

Es decir

TABLA 1

             A                     B                     C                     D                     E                     

1 Sergio                     OW                 DC                  AOW               DC                

2 Stefan                     DC                  DC                  DC                  DC                      

3 Andrea                  AOW                OW                 DC                  DC   

4 Sergio                    OW                  OW                  DC                  DC

Y quiero que en la Tabla 2 me cuente cuantas veces sergio tiene OW, DC y AOW. Y lo mismo con el resto de personas.

TABLA2

                                     OW                 DC                  AOW                                   

1 Sergio                        3                     4                       1

2 Stefan                        0                     4                       0

3 Andrea                       1                    2                        1

Los números en cursiva son el resultado que me debería dar la fórmula

Quiero descartar tablas dinámicas. ¿Alguna idea?

2 Respuestas

Respuesta
1

.19.04.17

Buenos días, Sergio

La siguiente fórmula matricial sirve para hacer ese conteo. La ventaja es que puedes continuar agregando gente o conceptos a contar y la misma fórmula hará el cálculo que necesitas automáticamente, sin necesidad de ejecutar nada

Armé un ejemplo con tus datos, para poder darte la referencia de celdas. Desde luego, reemplaza las direcciones en la fórmula de acuerdo a las propias tuyas:

En la primera celda de tu cuadro resumen coloca la siguiente fórmula pero no des Enter aún:

=SUMA(SI($A12=$A$3:$A$6;SI(B$11=$B$3:$E$6;1;0)))

Debes presionar Ctrl + Shift + Enter.

[Considera si usas comas o punto y coma para separar argumentos de las funciones. Yo usé ";"]
Asígnale el formato deseado y, luego, copia esta celda y pégale en las restantes de esta misma columna. Luego, copia esa columna y pégale en las que están a la derecha.

Como verás, la misma fórmula sirve para cualquier nombre en la columna a la izquierda y para cualquier concepto en la fila 11, dado el uso del signo $ para fijar la referencia a esa primera columna y fila.

Las fórmulas matriciales como la que usé son algo así como las fórmulas SUMAR. SI() o CONTAR. SI(), que suman o cuentan sobre la base de una condición, pero estas permiten agregar más condiciones y eventualmente modificar datos antes de usarlos para calcular "en el aire".

Estas fórmulas también son conocidas como CSE formulas, por Control+Shift+Enter que son las teclas que hay que presionar simultáneamente después de tipear la fórmula (no basta con Enter). Un par de llaves {} se agregarán automáticamente, encerrando la fórmula. Esto es FUNDAMENTAL para que funcione.

¡Gracias fejoal !

La verdad es que ha funcionado perfectamente. Me considero bastante avanzado en excel (macros, formularios, etc.) y no tenia ni idea de las fórmulas CSE. Me tocara investigar un poco más. Mil gracias!

Respuesta
1

Te anexo una macro.

Crea 2 hojas y les pones por nombres "Tabla1" y "Tabla2"

Pon tus datos en la hoja "Tabla1" empezando en la celda A1 (tal y como pusiste tu ejemplo)

Ejecuta la macro, el resultado del conteo quedará en la hoja "Tabla2"

Sub Contar_Celdas()
'Por.Dante Amor
    Set h1 = Sheets("tabla1")
    Set h2 = Sheets("tabla2")
    '
    h2.Cells.Clear
    For i = 1 To h1.Range("A" & Rows.Count).End(xlUp).Row
        For j = 2 To h1.Cells(i, Columns.Count).End(xlToLeft).Column
            nom = h1.Cells(i, "A")
            ind = h1.Cells(i, j)
            Set b = h2.Columns("A").Find(nom, lookat:=xlWhole)
            If Not b Is Nothing Then
                fila = b.Row
            Else
                fila = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
                h2.Cells(fila, "A") = nom
            End If
            Set b = h2.Rows(1).Find(ind, lookat:=xlWhole)
            If Not b Is Nothing Then
                col = b.Column
            Else
                col = h2.Cells(1, Columns.Count).End(xlToLeft).Column + 1
                h2.Cells(1, col) = ind
            End If
            h2.Cells(fila, col) = h2.Cells(fila, col) + 1
        Next
    Next
    fila = h2.Range("A" & Rows.Count).End(xlUp).Row
    col = h2.Cells(1, Columns.Count).End(xlToLeft).Column
    On Error Resume Next
    h2.Range("B2", h2.Cells(fila, col)).SpecialCells(xlCellTypeBlanks).Value = 0
    MsgBox "fin"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Contar_Celdas
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias Dante!

La verdad es que no lo he probado. Lo he resuelto con la otra respuesta. De todos modos muchas gracias, y viniendo de ti seguro que funciona! heheheh!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas