martes, 16 de diciembre de 2014

Tabla Dinámica: cambiar contar por sumar

Archivo de Excel utilizado: cambia_contar_por_sumar.xlsm

En ocasiones al crear una tabla dinámica aparece CONTAR cuando lo que nosotros deseamos es que aparezca SUMAR. A veces aparece CONTAR y otras veces aparece SUMAR ¿cuál es el motivo?

Si partimos de una base de datos en forma de tabla donde no existen celdas vacías la Tabla Dinámica se creará con la opción SUMAR, pero si existe alguna celda vacía en un campo la Tabla Dinámica se creará con la opción CONTAR.

Si lo que deseamos es SUMAR debemos cambiar una a una todas las columnas (todos los campos) ya que Excel no permite cambiar todos ellos simultáneamente. Cuando tenemos muchas columna que cambiar esto supone una tarea repetitiva bastante tediosa. Para estos casos disponemos de una macro que efectuará el cambio en todos los campos.

Hoja 1


Disponemos de una pequeña tabla con dos campos numéricos: Unidades y Facturación. Existen dos celdas vacías que hemos puesto de color amarillo. Al hacer la tabla dinámica sobre esta base de datos aparece:

  • Cuenta de Unidades
  • Cuenta de Facturación
que son dos columnas de la tabla dinámica que lo que hacen es contar el número de registros existentes de cada uno de esos tipos. Nosotros deseamos que efectúe la SUMA en lugar de la CUENTA. Podemos solucionarlo simplemente poniendo ceros en las celdas amarillas y al crear la tabla dinámica lo hará con SUMA que el lo que pretendíamos.

También podemos emplear la siguiente macro.

Sub Cambia_Contar_por_Sumar()
Dim pf As PivotField
With Selection.PivotTable
  For Each pf In .DataFields
    With pf
      .Function = xlSum
      .NumberFormat = "#,##0"
      .Name = Replace(.Name, "Cuenta", "Suma")
    End With
  Next pf
End With
End Sub

Antes de ejecutar la macro debe crear la Tabla Dinámica y situar el cursor dentro de la tabla dinámica.

Hoja 2


Disponemos de una base de datos similar a la anterior pero con 1.000 registros y 27 campos numéricos en los que, al menos, existe una celda vacía en cada uno de ellos que hemos puesto de color amarillo.

Proponemos como ejercicio que realice la tabla dinámica y que emplee la macro para convertir CUENTA en SUMA.

Primero cree la tabla dinámica tal y como se ve en la siguiente imagen.



Finalmente sitúe el cursor dentro de la tabla dinámica y ejecute la macro.