martes, 3 de enero de 2012

Ordenación alfabética de una lista extensible

En el artículo anterior hemos visto la manera de ordenar alfabéticamente una lista utilizando columnas auxiliares. En este artículo veremos cómo hacerlo sin emplear columnas auxiliares y, además, permitiendo añadir, eliminar o modificar valores de la lista original. Usaremos "nombres" de Excel para almacenar los resultados intermedios.

La lista original, que podrá tener nombres repetidos, estará en la columna B y la ordenada en la columna D.

Para referirnos a la columna B, usaremos un "nombre" llamado Lista_1. Lo crearemos accediendo a Fórmulas + Asignar nombre. Pondremos los datos de la figura y terminaremos pulsando Aceptar.

En Ámbito podemos elegir Libro o el nombre de la hoja (en nuestro caso, la hoja se llama Alfa). Si elegimos Libro, el "nombre" podrá ser utilizado en cualquier hoja (tipo global); por el contrario, si elegimos el nombre de la hoja sólo se podrá usar en esa hoja (tipo local).

Lista_1 es una lista dinámica y contiene todos los nombres de la columna B. Podemos comprobarlo seleccionando el rango F3:F22 y escribiendo: =Lista_1. Hay que terminar con Ctrl + Mayús + Intro.

Las celdas F20:F22 contienen un error ya que la lista se termina en Darío (F19). Borramos esta columna ya que no la vamos a utilizar.

Necesitamos otro "nombre" al que llamaremos Auxiliar_1. Volvemos a acceder a Fórmulas + Asignar nombre y ponemos los datos siguientes:

Auxiliar_1 es una lista de números que los mostraremos seleccionando, de nuevo, F3:F22, escribiendo: =Auxiliar_1 y terminando con Ctrl + Mayús + Intro.

Algunos números están repetidos. Por ejemplo, el 2 aparece dos veces y corresponden a las dos apariciones de Andrés, que alfabéticamente ocupa las dos primeras posiciones de las lista. Hubiera sido más claro si a la primera aparición de Andrés le hubiera correspondido el 1 y a la segunda el 2. Sin embargo, esto no nos va a crear ningún problema. Del mismo modo, el número 12 está repetido tres veces; son las tres veces que aparece Luis. Luis ocupa los puestos 10, 11 y 12. Otros nombres repetidos son Fermín y Román. Borremos esta última columna.

En D3:
=INDICE(Lista_1;COINCIDIR(FILA(A1);Auxiliar_1;0);1)

Extendemos la fórmula hasta la fila 19.

Debemos afinar un poco la fórmula. En los lugares en los que debería aparecer un nombre repetido se muestra un error. Si nos fijamos que debajo del error #N/A hay siempre otro error #N/A o el nombre de la persona repetida, podemos modificar la fórmula para hacer que en vez del error se muestre el valor de la celda que está justamente debajo. Para ello, usaremos DIRECCION, INDIRECTO y la función SI.ERROR, que fue introducida en Excel a partir de la versión 2007.

Sustituimos la fórmula de D3 por la siguiente:
=SI.ERROR(INDICE(Lista_1;COINCIDIR(FILA(A1);Auxiliar_1;0);1);INDIRECTO(DIRECCION(FILA()+1;COLUMNA())))

Extendemos la fórmula hasta la fila 25 (o más abajo si prevemos que se van a añadir muchos nombres nuevos en el futuro).

Habrán aparecido ceros a partir de la fila 19 porque ya no hay más nombres. Para ocultarlos, seleccionamos la columna D, pulsamos Ctrl + 1 y ponemos el formato personalizado: ;;;@

Terminamos pulsando Aceptar. La lista está perfectamente ordenada. Si añadimos nuevos nombres en la columna B o cambiamos algunos, la columna D se actualizará automáticamente.

La función SI.ERROR tiene el siguiente formato:

SI.ERROR(valor; valor_si_error)

El primer argumento es una fórmula que puede devolver un valor concreto o un error. Si devuelve un error, se ejecuta el segundo argumento; en caso contrario se aplica el valor generado por la fórmula. En Excel 2003 no existe la función SI.ERROR, por lo que en el archivo que se puede descargar a continuación se ha sustituido la fórmula por otra en la que se usa la función SI.

Descargar archivo (SE5-Ordenar lista extensible.xls)

Descargar archivo (SE5-Ordenar lista extensible.xlsx)


No hay comentarios:

Publicar un comentario