domingo, 29 de abril de 2012

Elementos distintos y repetidos en una lista

Descargar el fichero: aeropuertos.xlsx

Deseamos determinar cuantos elementos se encuentran repetidos en un listado, y deseamos saber quienes son los repetidos.

Hoja 1

Disponemos de una serie de ciudades y deseamos conocer cuantos elementos hay sin repetición. Para ello utilizamos la fórmula matricial que se encuentra en la celda D14 y cuya explicación se encuentra paso a paso en las columna C, y D.

La fórmula matricial de la celda D14 es la siguiente:

=SUMA(1/CONTAR.SI(B4:B11;B4:B11))



Hoja 2

En este caso vamos a entender que un elemento está o no repetido según dos diferentes criterios. El estudio se puede entender de dos formas. La primera considera el conjunto total de datos y establece quienes están repetidos una o más veces. El segundo criterio analiza los datos por orden y únicamente considera que el dato está repetido si ya apareció anteriormente.

Partimos de un listado de AENA con los aeropuertos españoles y sus códigos de tres caracteres. Por ejemplo, el código de Barcelona es BCN.

En la columna K establecemos una serie de números aleatorios entre 0 y 1, que nos servirán para luego elegir los aeropuertos que deseamos analizar en otra tabla.

La fórmula de la celda K4 es:

=1/42+K3



En la columna C generamos de forma aleatoria los códigos de los aeropuertos. Generamos 24 códigos a elegir entre los 42 disponibles. Estos códigos al ser aleatorios podrán salir repetidos. Esto se consigue con la fórmula siguiente:

=BUSCARV(ALEATORIO();valores;2)

Donde 'valores' es el rango K3:L44

Método 1

En la columna D determinamos si el valor de la columna C que estamos analizando se encuentra repetido o no respecto a todos los valores de la propia columna C. Esto se hace en la celda D12 con la siguiente expresión.

=SI(CONTAR.SI(C:C;C12)>1;"repe";"")

Método 2

En la columna E vamos a determinar si un valor se encuentra repetido únicamente respecto a los que han aparecido antes que él, dentro de la propia columna C.

Este es el motivo de que en E12 siempre ponga 'nuevo' por definición, ya que es el primero.

La fórmula de la celda E13 es la siguiente:

=SI(C13="";"";SI(ESERROR(BUSCARV(C13;C$12:C12;1;FALSO));"nuevo";"repetido"))

Es importante observar que el rango que se está analizando es el rango C$12:C12 que se corresponde con los valores previos, y se ha de marcar con un dolar la primera referencia para dejarla fija y sin dólares la segunda referencia para dejarla libre.


2 comentarios:

  1. Hola, llevo un par de semanas con el trabajo de las fórmulas matriciales. En particular, esta me ha servido mucho, pero tengo un problemas. ¿Existe la posibilidad que la lista resultante este ordenado por ej: orden alfabético? o por número de veces que se repite el valor en la lista?
    Muchas gracias y felicitaciones por el trabajo que te das en el blog.
    Salu2
    Gonzalo

    ResponderEliminar