Cuando tenemos una lista de valores en Excel que contiene números y letras, es probable que no podamos ordenarlos de manera ascendente, o descendente, tal como lo necesitamos ya que Excel colocará primero los valores numéricos y posteriormente las cadenas de texto.
Para entender correctamente el problema al que me refiero, considera la siguiente imagen, donde la columna A tiene algunos valores que son solamente números y otros valores que son una combinación de un número con una letra.
De manera predeterminada, Excel da una alineación a la derecha de la celda para los valores numéricos y una alineación a la izquierda para las cadenas de texto así que es fácil saber a simple vista la manera en que Excel ha identificando cada uno de los valores anteriores.
Mi objetivo es ordenar los valores de manera ascendente de la siguiente manera: 10, 10A, 20, 20B, 30, 30C, 40, 40D, 50, 50D. Para ordenar los datos seleccionaré el rango A1:A10 y posteriormente iré a Inicio > Modificar > Ordenar y filtrar > Ordenar de A a Z.
Excel ordenará los datos, pero no lo hará como yo lo necesito. La siguiente imagen muestra el resultado obtenido y podrás observar que todos los valores que tienen un carácter al final son colocados al final de la lista.
Algunos usuarios de Excel supondrían que para ordenar los datos se tomará en cuenta el primer carácter de cada valor, pero no es así. Este ejemplo nos deja una enseñanza muy importante sobre los criterios de ordenación en Excel y es que siempre se ordenarán primero los valores numéricos y posteriormente las cadenas de texto.
Una vez que conocemos esta regla en Excel podemos suponer que si convertimos los números en cadenas de texto obtendremos el orden deseado en los datos. Y aunque siempre es conveniente guardar los números en Excel como datos numéricos, en esta ocasión debemos convertir los números a texto para obtener el orden requerido.
Cambiar el formato de las celdas
Podríamos suponer que con solo cambiar el formato de las celdas obtendremos el resultado deseado así que haremos ese ejercicio. Para cambiar el formato de las celdas debo seleccionar el rango A1:A10 y hacer clic derecho sobre ellas y posteriormente seleccionar la opción Formato de celdas lo cual nos mostrará el siguiente cuadro de diálogo.
Seleccionamos la pestaña Número y dentro de la lista Categoría elegimos la opción Texto. Al hacer clic en Aceptar, todos los valores numéricos en el rango A1:A10 se alinearán a la izquierda como si fueran cadenas de texto. Sin embargo, al aplicar el orden ascendente, no habrá ningún cambio en el orden de los datos.
Esta medida habría funcionado si el cambio en el formato de las celdas se hubiera hecho antes de introducir los datos, pero una vez que los datos han sido ingresados, el cambio no afectará el formato de los números y por lo tanto no se ordenarán de la manera deseada.
Formato de texto antes de la captura
Haremos un ejercicio para comprobar que el formato de las celdas funcionaría adecuadamente si se aplicara antes de ingresar los datos. En una hoja diferente seleccionaré el rango A1:A10 y aplicaré el formato Texto desde la lista desplegable que se encuentra en la pestaña Inicio > Número.
Posteriormente ingresaré los mismos datos de nuestro ejemplo anterior. Observa que Excel muestra un mensaje de advertencia en las celdas que contienen números.
En esta ocasión, los valores numéricos son efectivamente almacenados como texto y al aplicar la ordenación ascendente obtendré el resultado deseado.
Este método nos permite cambiar correctamente los números a un formato de texto, lo cual resultará en un orden como el que necesitamos. Lo que no podemos olvidar es que debemos aplicar el formato de texto a las celdas antes de ingresar los datos.
Ya que en más de una ocasión no seremos nosotros los encargados de ingresar los datos sino que tenemos que trabajar con archivos que ya tienen la información en la hoja, te mostraré cómo hacer el cambio de formato de los valores numéricos cuando los datos fueron ingresados previamente.
El comando Texto en columnas
Para cambiar los números de un rango de celdas a un formato de texto podemos utilizar el comando Texto en columnas. Para comenzar seleccionaré el rango A1:A10 que contiene los datos previamente ingresados e iré a la pestaña Datos > Herramientas de datos > Texto en columnas.
Esto abrirá el Asistente para convertir texto en columnas que consta de 3 pasos. Para el primero y segundo paso del Asistente dejaré las opciones predeterminadas y simplemente haré clic en el botón siguiente.
Una vez que llegamos al paso tres, debemos asegurarnos de elegir la opción Texto dentro del grupo Formato de los datos en columnas. Además, en el cuadro de texto Destino debemos asegurarnos de tener la misma celda donde inician los datos y que para nuestro ejemplo es la celda A1. Para nuestro ejemplo, el cuadro de diálogo deberá visualizarse de la siguiente manera:
Al pulsar el botón Finalizar, se realizará el cambio de formato en las celdas y observarás que todas las celdas se alinearán a la izquierda indicándonos que Excel las identifica como texto y además se mostrarán las advertencias en las celdas que contienen números almacenados como texto. Al aplicar un orden ascendente al rango de celdas obtendré el resultado esperado.
Para remover las advertencias de las celdas, asegúrate de tener seleccionado todo el rango y posteriormente hacer clic sobre el icono de advertencia y dentro del menú desplegado elegir la opción Omitir error.
Ahora ya conoces dos técnicas que son útiles para esos casos en los que necesitas cambiar el formato de números a texto. Recuerda que cambiar el formato de la celda a texto solo funcionará si dicho cambio se hace antes de ingresar los datos. Si los números ya fueron capturados previamente, lo mejor será utilizar el comando Texto en columnas.
Si tienes el problema inverso, en donde tienes números almacenados como texto pero quieres convertirlos a un valor numérico, puedes seguir el mismo procedimiento del comando Texto en columnas y en el paso 3 deberás asegurarte de seleccionar la opción General como Formato de los datos en columnas y al finalizar Excel convertirá esos valores de texto en valores numéricos.