Excel nos permite ordenar la información rápidamente utilizando el comando Ordenar y filtrar, pero en ocasiones necesitamos una fórmula para ordenar datos en Excel y en esta ocasión te mostraré una alternativa para hacerlo.
Los datos que utilizaremos en nuestro ejemplo tienen una columna de texto y otra columna de números. En el primer ejemplo ordenaremos los datos por los datos numéricos y en el segundo ejemplo ordenaremos por los valores de texto.
Fórmula para ordenar datos numéricos
Para nuestro primer ejemplo haremos un ordenamiento descendente de la columna Calificación. La función que nos permitirá hacer esto de una manera sencilla será la función JERARQUIA.EQV la cual obtiene la posición de un número dentro de un rango. Es importante mencionar que esta función está disponible a partir de Excel 2010, para versiones anteriores debes utilizar la función JERARQUIA. Ahora considera la siguiente fórmula:
=JERARQUIA.EQV(B2,$B$2:$B$9)
Esta fórmula obtiene la posición del valor en B2 dentro del rango B2:B9 que para nuestro ejemplo será la posición 3, observa el resultado:
La columna Posición asigna el número 1 al valor más alto dentro del rango y a partir de ahí se enumeran todos los registros. Puedes ver que la posición 8 corresponde a la calificación 61 la cual es la más baja de todas las calificaciones. Ahora que ya tenemos las posiciones podemos ordenar los datos utilizando como referencia la columna posición y utilizando la función INDICE y la función COINCIDIR de la siguiente manera:
=INDICE($A$2:$A$9,COINCIDIR(E2,$C$2:$C$9,0))
La función INDICE obtiene un valor dentro de un rango con solo especificar su fila. Con esta fórmula estamos buscando dentro del rango A2:A9 y la fila la obtenemos al hacer coincidir el número 1 de la columna E con el número 1 de la columna C (Posición) que para nuestro ejemplo es Roberto:
Al copiar la fórmula hacia abajo obtenemos automáticamente el nombre de cada alumno de acuerdo a su posición. Para obtener el dato de la calificación usamos una fórmula idéntica a la anterior con la diferencia de que la función INDICE hará la búsqueda sobre el rango B2:B9:
Con esto hemos ordenado los datos de manera descendente utilizando una columna numérica. Si queremos hacer un ordenamiento ascendente debemos hacer un solo cambio en la función JERARQUIA.EQV de la columna Posición colocando un número 1 como el tercer argumento de la función lo cual hará que los datos se ordenen de manera ascendente. Observa la fórmula de la celda C2 y el resultado del ordenamiento en los datos:
En este caso los datos se ordenan comenzando por la calificación de menor valor hasta la de mayor valor. Así que con solo modificar el tercer argumento de la función JERARQUIA.EQV podrás controlar el tipo de ordenamiento de los datos.
Desempate de valores numéricos
Nuestro ejemplo anterior funcionó a la perfección porque no tenemos calificaciones repetidas entre los alumnos pero observa lo que sucede si Ignacio y Brenda tienen la misma calificación:
Al tener dos datos numéricos del mismo valor, la función JERARQUIA.EQV determina un empate entre ambos y les otorga la misma posición, que en nuestro ejemplo es la posición 5, pero la siguiente posición otorgada será la posición 7 saltándose la posición 6 y por lo tanto generando un error en nuestra tabla ordenada.
Para solucionar este problema utilizaré una columna auxiliar donde sumaré a cada calificación el número de fila donde se encuentran los datos. De esta manera, la calificación 77 de Sonia en la columna auxiliar tendrá un valor de 77.000002 porque se encuentra en la fila 2 de la hoja de Excel, la calificación de 72 de Ignacio tendrá un valor de 72.000003. La fórmula utilizada en la columna auxiliar será la siguiente:
=B2+0.000001*FILA()
Otro cambio que debemos hacer es modificar la fórmula de la columna Posición para que la función JERARQUIA.EQV haga el ordenamiento utilizando la columna auxiliar. El resultado es el siguiente:
Observa que nuestra tabla de datos ordenada ya no muestra el error ocasionado por la repetición de calificaciones de Ignacio y Brenda.
Fórmula para ordenar texto en Excel
Para ordenar texto en Excel utilizando fórmulas es importante recordar la manera en que la herramienta trabaja con texto especialmente al utilizar operadores de comparación. Observa la siguiente tabla de datos:
Al utilizar el operador Mayor que (>) para comparar dos textos, Excel nos responderá si el primero de ellos tiene una posición mayor dentro del alfabeto. Para la celda C2 el resultado es falso porque la letra A no está después de la letra B. Sin embargo, para la celda C3 el resultado es verdadero porque la letra Z está efectivamente después de la letra A.
Lo mejor de todo es que esta comparación funciona correctamente para palabras y lo puedes ver con los ejemplos de las últimas dos filas. El hecho de que Excel nos devuelva este resultado al comparar dos textos nos facilitará mucho el ordenamiento con fórmulas. Para llegar a la solución de ordenamiento utilizaremos la función CONTAR.SI la cual nos ayudará a contar la cantidad de cadenas de texto que se encuentran ubicadas alfabéticamente antes de otra. Considera la siguiente fórmula:
=CONTAR.SI($A$2:$A$9,"<="&A2)
La función CONTAR.SI contará todos los elementos del rango A2:A9 que sean menores o iguales que el valor de la celda A2 y de esta manera sabremos la cantidad de valores que le anteceden alfabéticamente. Observa el resultado de esta fórmula:
En nuestro ejemplo Brenda tiene la posición 1 porque la función CONTAR.SI encuentra que solo el texto de la misma celda A8 es menor o igual a Brenda. La posición 2 es para Ignacio porque Brenda e Ignacio son los valores ubicados en una posición alfabética menor o igual dentro del rango. Para generar la tabla con los datos ordenados utilizamos la misa técnica que en el ejemplo anterior con la función INDICE y COINCIDIR:
De esta manera hemos ordenado los datos de manera ascendente por la columna Nombre. Si queremos ordenarlos de manera descendente será suficiente con cambiar el operador de comparación utilizado en la condición de la función CONTAR.SI por un símbolo Mayor qué (>). En la siguiente imagen puedes ver el cambio en la fórmula lo cual ocasiona un cambio en la posición y ordenamiento de los datos:
Desempate de posiciones en valores de texto
Al igual que con los números, si tenemos dos celdas con el mismo texto tendremos un error en los datos ordenados así que debemos utilizar un criterio de desempate similar al explicado anteriormente utilizando una columna auxiliar con la siguiente fórmula:
=CONTAR.SI($A$2:$A$9,"<="&A2) + 0.000001*FILA()
Como ya vimos en el ejemplo anterior, la función CONTAR.SI nos devuelve la cantidad de elementos que preceden alfabéticamente a la celda A2 y a ese resultado le sumaremos el número de fila para asegurarnos de que sea un valor único dentro de la columna auxiliar. Para obtener la posición final utilizaremos la función JERARQUIA.EQV de la siguiente manera:
=JERARQUIA.EQV(C2,$C$2:$C$9,1)
Finalmente modificamos las fórmulas en la tabla de datos para que la función COINCIDIR consulte el resultado de la función JERARQUIA.EQV. Observa cómo se ordenan los datos de manera ascendente por la columna de texto y las dos celdas con el mismo valor aparecen juntas:
En realidad hemos revisado más que una sola fórmula para ordenar datos en Excel, pero las opciones presentadas cubren una buena cantidad de posibilidades de ordenamiento que seguramente te serán de utilidad. Puedes descargar el libro de trabajo con los ejemplos descritos en este artículo para que experimentes por tu cuenta.