Las 6 antiguas formas de contar valores únicos
Como has venido comprobando en los artículos de estas últimas semanas, las matrices dinámicas son un concepto relativamente nuevo que nos facilita el trabajo simplificando algunos cálculos.
Por ejemplo, hoy te hablaré de 6 métodos (seguro que hay más) que utilizaba hace tiempo para contar los valores únicos de un rango antes de la aparición de las matrices dinámicas.
Si tienes Microsoft 365 la fórmula a utilizar sería esta:
=CONTAR(UNICOS(rango)) -> para valores numéricos.
=CONTARA(UNICOS(rango)) -> para otros tipos de dato.
Si no tienes una suscripción a Microsoft 365 no te quedará mas remedio que utilizar una de las siguientes técnicas (u otras similares). El método dependerá de si se trata de números o textos:
Contar valores únicos usando el filtro avanzado
El Filtro avanzado es quizá la herramienta más infravalorada de Excel (¿la has usado alguna vez?) Con ella puedes establecer uno o varios filtros simultáneos para un rango de celdas.
Imagina que tienes un rango con los nombres de los clientes de la última semana. Cada vez que realizan una compra se registran sus datos en el ERP y, por tanto si uno de ellos compra varias veces, su nombre aparece repetido.
Tu objetivo es saber cuántos clientes distintos compraron en esa semana.
El Filtro avanzado se encuentra en el botón Avanzadas del grupo Ordenar y filtrar de la ficha Datos. Haz clic en él.
Selecciona el rango de celdas incluido su encabezado. A continuación abre la herramienta Filtro avanzado y configura los siguientes valores:
- Selecciona la opción Copiar a otro lugar.
- En el rango de la lista selecciona el rango que contiene las celdas a filtrar.
- En Copiar a selecciona la celda desde la que quieres que se peguen los resultados del filtro.
- No te olvides de activar la casilla solo registros únicos.
Una vez filtrados los datos haz clic en una celda por debajo del último valor y escribe la fórmula:
=CONTARA(C3:C28)
Introduciendo el rango donde se haya pegado el filtro.
El resultado de la fórmula será el número de clientes únicos de la semana.
Esta es la forma más sencilla de contar los valores únicos de una lista, pues no es necesario tener grandes conocimientos de fórmulas.
Contar valores únicos usando las funciones SUMA y CONTAR.SI
Si no quieres generar una lista de valores únicos separada puedes contarlos en una única celda con las funciones SUMA y CONTAR.SI.
En este método solo tienes que hacer referencia al rango de celdas que contiene los valores para que la fórmula devuelva la cuenta. Como se trata de una fórmula matricial necesitarás introducirla presionando las teclas Ctrl + Mayús + Intro (versiones diferentes a Excel 365).
=SUMA(1/CONTAR.SI(A2:A36;A2:A36))
Mi rango evidentemente es A2:A36. Adáptalo al tuyo.
La función CONTAR.SI (introducida de forma matricial) devuelve una lista con el número de veces que se repite cada valor.
Al dividir 1 entre el número de veces que se repite el valor se obtiene un número de 0 a 1. Cuantas más veces se repita más bajo es el valor.
Para finalizar, la función SUMA devuelve la suma de los números entre 0 y 1 obteniendo así el número de valores únicos de la lista.
Contar valores únicos con las funciones SUMAPRODUCTO y CONTAR.SI
En este método puedes sustituir la función SUMA por SUMAPRODUCTO.
Como SUMAPRODUCTO trabaja bien con matrices no es necesario presionar las teclas Ctrl + Mayús + Intro para introducir la fórmula. Obsérvala.
La fórmula funciona exactamente igual que la anterior.
Contar textos únicos
Supón ahora que en tu listado de valores se encuentran mezclados textos y números y tu objetivo es el de hallar el número de textos únicos (ignorando los números).
En este caso puedes usar esta fórmula:
=SUMA(SI(ESTEXTO(A2:A36);1/CONTAR.SI(A2:A36; A2:A36);””))
Recuerda, si no tienes Excel365 debes introducirla presionando las teclas Ctrl + Mayús + Intro
En esta ocasión utilizo la función ESTEXTO para identificar los valores de texto. Si es texto devuelve VERDADERO y en caso de que no lo sea devuelve FALSO.
Después de esto la función SI aplica CONTAR.SI a los valores que se han evaluado como VERDADERO.
Los valores de la imagen anterior que aparecen vacíos (“”) es porque se trata de un número.
Para finalizar SUMA es la encargada de sumar los valores numéricos y obtener la cuenta de valores de texto únicos.
Contar números únicos
Si estabas pensando que contar números únicos era similar a contar textos únicos, estás equivocado/a, porque es igual.
Únicamente tienes que sustituir la función ESTEXTO por ESNUMERO:
=SUMA(SI(ESNUMERO(A2:A36);1/CONTAR.SI(A2:A36; A2:A36);””))
Contar valores únicos con una función VBA personalizada
Por último te ofrezco una solución mediante una función VBA personalizada.
Function ContarUnicos(RangoCeldas As Range) As Integer
Dim ValorCelda As Variant
Dim ValoresUnicos As New Collection
Application.Volatile
On Error Resume Next
For Each ValorCelda In RangoCeldas
ValoresUnicos.Add ValorCelda, CStr(ValorCelda) ' Agrega el elemento único
Next
ContarUnicos = ValoresUnicos.Count
End Function
A grandes rasgos la macro recorre cada una de las celdas del rango introducido como argumento en la función y va almacenando el contenido. Si una celda tiene una “clave” igual a otra ya introducida, no lo agrega a la variable ValoresUnicos
.
Para finalizar, se cuenta el número de elementos que contiene ValoresUnicos
y se asigna el resultado a la función.
Si deseas utilizar este método solo tienes que copiar el código anterior en un módulo estándar y en la hoja de cálculo utilizar la siguiente fórmula:
=CONTARUNICOS(A2:A36)
Resumen
Cuando trabajas con grandes cantidades de datos puede que te sean útiles estas seis técnicas para contar valores únicos.
Cada una de ellas puede ser útil en una situación diferentes y puedes usar la que creas conveniente en cada ocasión.
Si me dieran a elegir entre una de las seis me quedaría con SUMAPRODUCTO + CONTAR.SI porque no es necesario introducir la fórmula como matricial (aunque ahora trabajo con Excel 365, no siempre lo tuve).
¿Cuál es tu método favorito? Compártelo en los comentarios. Me gustaría leerlo.
Hola Sergio, buenos días
Soy otro seguidor fans de tantos que tienes
No sé si me puedes contestar a la siguiente pregunta:
Necesito contar valores únicos de una columna y a medida que se incrementan los datos, que también se vaya actualizando la fórmula.
he usado la matricial: suma(1/contar.si(a2:a158;a2:a158), pero no se actualiza.
Sergio, muchas gracias
En office 2016 cuenta una celda vacía. Para corregir se tiene que condicionar el ciclo for previamente, si el valor de la celda está vacía que no cuente.