Contar elementos únicos en tabla dinámica

Contextos

Cómo contar elementos únicos (count distinct) en una tabla dinámica de Excel. Tres métodos, para diferentes versiones de Excel. Obtenga el libro de trabajo gratuito para seguirlo

Gracias a Roger Govier, que creó este tutorial y el libro de trabajo.

Cuento de elementos únicos

Si está utilizando una tabla dinámica para resumir sus datos, puede tener preguntas como:

  • ¿Cuántos clientes únicos (distintos) hicieron compras en cada región?
  • ¿Cuántos productos únicos se vendieron en cada tienda?
  • ¿Cuántos vendedores únicos vendieron cada producto por región?
    • No hay una función incorporada de «Recuento único» en una tabla dinámica normal, pero en este tutorial, verá cómo obtener un recuento único de artículos en una tabla dinámica.

      • En Excel 2013 y posteriores, cree un Modelo de Datos
      • En Excel 2010, y versiones posteriores, utilice una técnica que «Pivote la tabla pivotante».
      • O, en versiones anteriores, añada una nueva columna a los datos de origen, y Utilice CountIf.
      • Si el complemento Power Pivot está instalado, utilícelo para mostrar un recuento distinto
        • Este vídeo muestra los pasos para mostrar un recuento distinto con el Modelo de Datos.

          Introducción

          A menudo tenemos grandes conjuntos de datos que queremos analizar con la ayuda de una Tabla dinámica, pero sólo queremos contar las ocurrencias únicas de algunos elementos de datos. Desgraciadamente, las tablas dinámicas nunca han tenido la facilidad incorporada de contar valores únicos.

          En este ejemplo, el archivo de muestra tiene 4999 registros que muestran las ventas de productos, con la región y el nombre del vendedor. Los primeros registros se muestran en la siguiente captura de pantalla. Puede descargar el archivo de ejemplo en el siguiente enlace.

          datos de origen para el pivote

          Crear una tabla dinámica a partir de los datos nos daría algo como lo siguiente, si añadimos Persona al área de Valores de la tabla dinámica y lo resumimos con Recuento.

          tabla dinámica con recuento de personas

          Sin embargo, esto nos está dando un recuento de todas las transacciones, no el recuento del número único de personas que hicieron esas transacciones dentro de cada Región.

          Obtener un recuento único

          Hay soluciones que puede utilizar, para obtener un recuento único:

          • Método 1: En Excel 2013 y posteriores, añada los datos de origen de la tabla dinámica al Modelo de Datos, y se puede hacer un recuento único fácilmente.
          • Método 2: En Excel 2010 y posteriores, utilice la técnica «pivotar un pivote».
          • Método 3: En versiones anteriores de Excel, añada una columna a los datos de origen para colocar un 1 en las celdas de una fila donde el valor es único, y un 0 en cualquier otra celda. A continuación, la suma de esta columna adicional proporciona el valor único.
          • Método 4: Utilice PowerPivot para crear la tabla dinámica y utilice sus funciones para crear un recuento único. Vea los detalles a continuación.

          A continuación se describen los cuatro métodos, junto con una comparación de rendimiento entre los métodos 2 y 3.

          1. Añadir al modelo de datos – Excel 2013 y posteriores

          En Excel 2013, si añade los datos de origen de una tabla dinámica al modelo de datos del libro, es fácil crear un recuento único.

          NOTA: esta técnica crea una tabla dinámica basada en OLAP, que tiene algunas limitaciones, como la ausencia de agrupación y de campos calculados o elementos calculados. Si necesita estas características restringidas, pruebe el método «pivotar un pivote» en su lugar.

          añadir al modelo de datos

          Crear un recuento único (Distinct Count)

          Para crear la tabla pivotante, siga estos pasos:

          • Seleccione una celda en la tabla de datos de origen.
          • En la parte inferior del cuadro de diálogo Crear tabla dinámica, añada una marca de verificación a «Añadir estos datos al modelo de datos»
          • Haga clic en Aceptar
            • añadir al modelo de datos

              Para configurar el diseño de la tabla dinámica, siga estos pasos:

              • En la tabla pivotante, añada Región al área Fila.
              • Añada estos 3 campos al área Valores — Persona, Unidades, Valor
              • El campo Persona contiene texto, por lo que tiene como valor predeterminado Recuento de Persona. El recuento muestra el número total de transacciones en cada región, no un recuento único de personas

              add to the data model

              Para obtener un recuento único de personas en cada región, siga estos pasos:

              • Haga clic con el botón derecho en uno de los valores del campo Persona
              • Haga clic en Configuración del campo de valor
                • seleccione Configuración del campo de valor

                  • En la lista Resumir campo de valor por, desplácese hasta la parte inferior, y haga clic en Recuento Distinto, luego haga clic en Aceptar
                  • seleccione Recuento Distinto

                    El campo Persona cambia, y en lugar de mostrar el recuento total de transacciones, muestra un recuento distinto de los nombres de los vendedores.

                    Cuento Distinto de nombres de vendedores

                    2. Pivotar la Pivot – Excel 2010

                    Para obtener un recuento único de vendedores por región en Excel 2010, podemos producir un Informe Pivotante, y luego «Pivotar la Pivot» para obtener nuestro resultado final.

                    Crear la Primera Tabla Pivotante

                    • Crear una Tabla Pivotante a partir de estos datos, con Región y Persona en el área Filas
                    • Añadir Unidades y Valor en el área Valores. Dado que Persona es un campo de texto, la tabla dinámica lo mostrará automáticamente como «Count of».
                    • Configure la tabla dinámica con el diseño de informe Tabular
                    • Configure todas las etiquetas de Elementos para que se repitan en cada fila.
                    • Cambie los Títulos, para eliminar la «Suma de»
                      TIP: escriba el nombre del campo original, con un carácter de espacio al final, por ejemplo, «unidades»
                      • tabla dinámica

                        Ahora parece una tabla de datos normal, pero es un resumen de la tabla de datos completa original con 4.999 filas.

                        Crear un rango con nombre para la celda inicial

                        A continuación, nombrará la primera celda de la tabla dinámica.

                        • Seleccione la celda B2, que es el encabezamiento de la columna Región de la tabla pivotante
                        • Haga clic en la barra de fórmulas y escriba un nombre para la celda — pvtInicio
                        • Pulse Intro, para completar el nombre

                        Cree un rango con nombre para la fila final

                        El siguiente paso es calcular la ubicación de la última fila de la tabla pivotante. Utilizaremos la función MATCH, con un número muy grande, para encontrar el último número de la columna D, y obtener su número de fila. Esta fórmula sólo funcionará en una columna con números.

                        • En la hoja Datos, en la celda M2, introduce esta fórmula, para calcular la última fila de la columna Unidades de la tabla dinámica:

                          =MATCH(9.9E+307,Method_1!D:D,1)

                        • Para nombrar esa celda, seleccione la celda M2, y en el Cuadro de Nombre, escriba PvtEnd, y pulse Enter.
                          • Crear un Rango Nombrado Dinámico

                            A continuación, crearemos un Rango Nombrado dinámico, para hacer referencia a esta nueva tabla. Este rango comenzará en la celda llamada pvtstart (la celda de encabezamiento de la Región), y terminará en la última fila de datos de la columna E (el rango nombrado, PvtEnd).

                            • En la pestaña Fórmulas de la cinta de opciones, haga clic en Definir nombre
                            • En el cuadro de diálogo Nuevo nombre, introduzca el nombre, misDatos
                            • En el desplegable Alcance, seleccione Libro de trabajo
                            • En el cuadro Se refiere a, escriba esta fórmula:
                              =pvtInicio:ÍNDICE(¡Método_1!$E:$E, PvtEnd)
                            • Haga clic en Aceptar, para crear el rango con nombre

                            tabla dinámica

                            Crear la segunda tabla dinámica

                            Por último, cree una segunda tabla dinámica, basada en el rango dinámico, misDatos.

                            Ponga Región en el área de Filas, y Persona, Unidades y Valor en el área de Valores

                            Esto muestra el número de vendedores únicos por regiones como se muestra a continuación. Por ejemplo, en la primera tabla dinámica, la región Este mostró 8 nombres únicos en la columna de persona, y ese es el recuento en esta tabla dinámica.

                            tabla dinámica

                            Refrescar las Tablas Dinámicas

                            Naturalmente, como hay 2 Tablas Dinámicas involucradas en esta solución, ambas tienen que ser refrescadas después de que cualquier dato haya sido añadido o cambiado en la tabla fuente. Es esencial que la primera PT se actualice primero, seguida de una actualización de la tabla dinámica final.

                            Puede refrescar las tablas dinámicas manualmente, o utilizar amacro. Para utilizar una macro, añada uno de los siguientes procedimientos a la hoja con su Tabla dinámica final.

                            A) Si ambas tablas dinámicas están en la misma hoja, utilice este código:

Private Sub Worksheet_Activate() Me.PivotTables(1).PivotCache.Refresh Me.PivotTables(2).PivotCache.Refresh End Sub

B) Si las tablas dinámicas están en hojas diferentes, utilice este código (sustituya el nombre de su hoja actual por «yoursheetname»):

Private Sub Worksheet_Activate() Sheets("yoursheetname").PivotTables(1).PivotCache.Refresh Me.PivotTables(1).PivotCache.Refresh End Sub

(Opcional) Nombrar el rango de datos de la tabla dinámica

Si está utilizando macros para actualizar las tablas dinámicas, también podría utilizar una macro para restablecer el rango nombrado myData después de cada actualización. Añada el siguiente procedimiento a su libro de trabajo y, a continuación, llame a este procedimiento SetmyData en los procedimientos Worksheet_Activate.

Sub SetmyData()'Change "PT_A" to whatever name'you have given to your first Pivot Table'that is to be used as the source'for for the final Pivot Table'Also change the sheet name'from "Method_1" to'your sheet name if it is differentDim PTName As StringDim ShName As StringPTName = "PT_A"ShName = "Method_1"ThisWorkbook.Names.Add _ Name:="myData", _ RefersTo:=Sheets(ShName) _ .PivotTables(PTName) _ .TableRange1End Sub

3. Utilice COUNTIF — Excel 2007 y anteriores

En versiones anteriores de Excel, las tablas dinámicas no tienen la opción de repetir las etiquetas de las filas. Para obtener un recuento único de vendedores por región, puede añadir una nueva columna en los datos de origen, e introducir una fórmula COUNTIF

Puede descargar el archivo de ejemplo en el siguiente enlace.

Agregar la fórmula COUNTIF

Siga estos pasos, para agregar la fórmula:

En los datos de origen, agregue un nuevo encabezado de columna — «Único» — en la celda J1

En la celda J2, introduzca esta fórmula, y cópiela hasta la última fila de datos:

=IF(COUNTIF($E$5:E5,E5)>1,0,1)

La primera referencia del rango ($E$5) es Absoluta, y la segunda es relativa (E5), por lo que a medida que copiamos la fórmula hacia abajo en la página, así el rango se expandirá de $E$5:E5 a $E$5:E6, luego $E$5:E7 y así sucesivamente.

En cada fila estamos comprobando cuántas veces se ha producido el valor de la columna E (Persona), hasta la fila actual. Si es mayor de una vez, el resultado es cero, por lo que esa persona no se vuelve a contar. Esto nos permite ver el número de veces únicas dentro del conjunto de datos que ha aparecido el nombre de cada Persona.

Con la columna extra añadida, los datos tendrían este aspecto. La segunda instancia de «Harry» devuelve un cero en la columna Único.

Fuente de datos con COUNTIF

NOTA: Si hay personas con el mismo nombre vendiendo en diferentes Regiones:

  • En Excel 2007 o posterior: Utilice COUNTIFS, para comprobar múltiples criterios. Por ejemplo, =IF(COUNTIFS($D$5:$D5,D5,$E$5:E5,E5)=1,1,0)
  • En Excel 2003 o anterior, concatene los nombres de la Región y de la Persona en una nueva columna y, a continuación, utilice la fórmula COUNTIF para encontrar valores Únicos en esa columna concatenada.

Crear una tabla dinámica

Para ver los recuentos únicos en una tabla dinámica:

  • Cree una tabla dinámica a partir de estos datos, con Región en el área Filas
  • Añada Único, Unidades y Valor en el área Valores.
  • Cambie el encabezado «Único» por «Recuento de persona» o «Persona»
  • Tabla dinámica con el campo Único

    Podemos ver que hay 30 personas que hicieron las Ventas, y el número de cada una que están en cada Región, y si elegimos expandir cualquier Región entonces veríamos los totales individuales de cada Persona.

    Comparación del rendimiento

    Si es posible, utilice el método «pivote a pivote», que es mucho más rápido.

    Método COUNTIF

    Utilizar una fórmula COUNTIF en los datos de origen funciona, y nos da nuestro resultado deseado, y en un conjunto de datos relativamente pequeño el método es aceptable. Pero, es muy costoso en términos de tiempo de procesamiento, y en conjuntos de datos muy grandes puede ser extremadamente lento.

    Usando «FastExcel» de Charles Williams para calcular el tiempo que tarda el libro de trabajo en calcular da el resultado que se muestra a continuación, donde el tiempo que se tarda en recalcular la hoja de Datos es de 224 milisegundos.

    tiempo de recálculo

    Método Pivot a Pivot

    El método «Pivot a Pivot» también produjo el resultado correcto, con un recuento único de Persona, como se requiere. Además, no depende de columnas adicionales en los datos de origen, ni de la introducción de ninguna fórmula nueva.

    El libro de trabajo resultante es más pequeño, y de nuevo utilizando «FastExcel» de Charles Williams para calcular el tiempo de cálculo de la hoja de datos es un increíblemente rápido 1.2 milisegundos

    tiempo de recálculo

    Con conjuntos de datos pequeños el tiempo de recálculo puede no ser crítico, pero cuando se trata de conjuntos de datos más grandes de 300.000 a 400.000 filas, entonces estas diferencias se convertirían en muy materiales.

    Power Pivot

    Si tiene instalado el complemento PowerPivot, puede utilizarlo para mostrar un recuento distinto para un campo. Este vídeo muestra los pasos para crear una tabla dinámica de Power Pivot, y añadir un campo con el recuento único.

    Para las instrucciones escritas, vea los pasos de Excel 2013 en mi blog de tablas dinámicas. También hay instrucciones para Excel 2010.

    Archivo de ejemplo: Para seguir el vídeo, descargue el archivo de ejemplo que se utilizó para este vídeo

    Obtenga los archivos de ejemplo

    • Modelo de datos: Descargue el libro de trabajo de ejemplo del Modelo de Datos, que tiene el ejemplo del Método 1 (Modelo de Datos). El archivo está comprimido, y en formato xlsx. El archivo no contiene macros.
    • Sin Modelo de Datos: Descargue el libro de trabajo de ejemplo sin Modelo de datos, que contiene ejemplos para el Método 2 (pivotar un pivote) y el Método 3 (columna en datos de origen). El archivo está comprimido y en formato xlsb. El archivo no contiene macros.
    • Video de Power Pivot: Para seguir el vídeo de Power Pivot en el método 4, descargue el archivo de ejemplo que se utilizó para el vídeo

    Tutoriales relacionados

    Nombrar rangos

    Cuenta única en PowerPivot

    Archivos de ejemplo – Roger Govier

    Acerca del desarrollador

    Roger Govier es un MVP de Excel con sede en el Reino Unido que realiza encargos en Excel y VBA para clientes de todo el mundo. Aunque disfruta del reto intelectual que supone resolver problemas con funciones de hoja de cálculo, Roger afirma ser intrínsecamente perezoso, por lo que siempre busca una forma rápida y sencilla de ofrecer soluciones sólidas y viables.

    Encuentra más tutoriales y archivos de ejemplo de Roger aquí: Archivos de ejemplo – Roger Govier

    Puedes contactar con Roger en: [email protected]

    Roger Govier Roger Govier

    Technology 4 U

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *