top of page

De numero a texto

Primer carácter

Vamos a intentar pasar un numero a letras, por ejemplo, si tenemos el número 1000, pues, debe de aparecer Mil.


Lo vamos a hacer por parte, es decir, dividiendo el valor en cada carácter.


Vamos a empezar y lo vamos viendo, empezaremos con el numero de 1.





La expresión final será larga, por lo que vamos a hacerlo por pasos, y, al final estos pasos que creemos, los uniremos para que quede en una única función.


Voy a explicar cómo lo vamos a hacer, por ejemplo, si tenemos el número 1000, para conseguir el texto del primer número, debemos de extraer el primer número por la derecha de la cadena, pero, si tenemos el número 1, también debemos de extraer el primer número por la derecha, de esta forma, siempre tendremos calculado el primer valor tenga los caracteres que tenga.


Pongamos el número 3001.


Si usamos la función SECUENCIA, donde como argumento filas, es la longitud de la celda B1, en la celda B1 es donde vamos a introducir el número.


=SECUENCIA(LARGO(B1))


Obtenemos una secuencia de números desde el numero 1 hasta el número que indica la longitud de la cadena.








Ahora, vamos a extraer la posición que indica la función SECUENCIA del valor de la celda B1, para ello, ponemos la función EXTRAE, como argumento texto, seleccionamos la celda B1.


=EXTRAE(B1


Como argumento posición inicial es la función SECUENCIA, es decir, cada valor.


=EXTRAE(B1;SECUENCIA(LARGO(B1))


Como argumento número de caracteres, ponemos 1.


Cerramos paréntesis.


=EXTRAE(B1;SECUENCIA(LARGO(B1));1)


Aceptamos, y, tenemos extraído cada carácter de la celda B1.







Vamos a usar la función CONTARA, y, como argumento es la expresión anterior.


=CONTARA(EXTRAE(B1;SECUENCIA(LARGO(B1));1))


Nos devuelve 4, quiere decir que del valor de la celda B1, debemos de extraer el cuarto carácter.


He cambiado el valor de la celda B1 a 30.001, ahora, la expresión CONTARA nos devuelve 5, quiere decir, que para convertir a letra el primer carácter, para este número, debemos de extraer el quinto carácter.


Pues, vamos a ello, debemos de volver a usar la función EXTRAE, como argumento texto es la celda B1, como argumento posición inicial es la expresión anterior, como argumento número de caracteres, ponemos 1.


Cerramos paréntesis.


=EXTRAE(B1;CONTARA(EXTRAE(B1;SECUENCIA(LARGO(B1));1));1)


Ya hemos extraído el ultimo carácter, pero vemos que se alinea a la izquierda, quiere decir que nos devuelve el valor en formato de texto, vamos a usar la función ABS que nos devuelve el valor absoluto, si como argumento ponemos un numero en formato de texto, nos lo convertirá a formato de número.


=ABS(EXTRAE(B1;CONTARA(EXTRAE(B1;SECUENCIA(LARGO(B1));1));1))


Como tenemos el número 30.001, nos devuelve el número 1, que es el último carácter por la izquierda.





Como tenemos un solo número, debemos de buscar en una escala que vaya desde el numero 1 al número 9, después, debemos de asegurarnos que el número es mayor o igual a 1, y, menor o igual a 9.













La búsqueda del número podemos hacerla de diferentes maneras, la primera de ellas vamos a hacerla con la función FILTRAR, como argumento array, seleccionamos el rango I1:I9, que son los nombres de números desde el 1 al 9.


=FILTRAR(I1:I9


Como argumento include, seleccionamos el rango H1:H9, que son los números del 1 al 9, y, lo igualamos a la expresión anterior.


Cerramos paréntesis.


=FILTRAR(I1:I9;H1:H9=ABS(EXTRAE(B1;CONTARA(EXTRAE(B1;SECUENCIA(LARGO(B1));1));1)))


Aceptamos, y, podemos ver el nombre del número.






Si ponemos un numero entre 1 y 9, nos devolverá el nombre.







Pongamos el numero que pongamos, ya tenemos el nombre del primer carácter por la derecha.


Veamos la expresión que hemos usado para extraer el primer carácter por la derecha.


=FILTRAR(I1:I9;H1:H9=ABS(EXTRAE(B1;CONTARA(EXTRAE(B1;SECUENCIA(LARGO(B1));1));1)))


Toda esta expresión nos devuelve el primer carácter por la derecha, pero, tenemos una función llamada DERECHA, que nos extrae el numero de caracteres por la derecha que le indiquemos, si omitimos le argumento numero de caracteres, de forma predeterminada, extraerá 1 carácter por la derecha, que, para este caso, es lo que necesitamos.


Vamos a sustituir la expresión del primer carácter por la derecha, por la función DERECHA.


=LET(a;ABS(DERECHA(B1));SI(Y(a>=11;a<=19);"";FILTRAR(I1:I9;H1:H9=a;"")))


Es una expresión más corta, y, fácil de entender, además, obtenemos los mismos resultados, tenga los caracteres que tenga la celda B1, siempre extraerá 1 carácter, y, si solo tiene un carácter, pues, extraerá dicho carácter.







Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page