top of page

Corregir errores y probar en otro libro

Antes de seguir, vamos a corregir algunos errores, y, vamos a probar esta conversión en un libro nuevo.


Vamos a insertar una fila entre 1 carácter, y, 2 carácter.







Si ponemos el numero 21, debe de aparecer veintiuno, no debe de aparecer la letra “y”, si ponemos el número 34, debe de aparecer treinta y cuatro, es decir, entre numero y numero debe de aparecer la letra “y”, si ponemos un numero entre 1 y 9, no debe de aparecer la letra “y”.


Si ponemos el numero 11, vemos que como primer carácter aparece uno, y, como segundo carácter, aparece once.





En este caso, el numero uno no debe de aparecer, vamos a la expresión de 1 carácter, después del signo igual, usamos el condicional SI, como argumento prueba lógica, usamos el operador lógico Y, preguntamos si el valor de la celda B1 es mayor a 10, y, menor a 20, es decir, un numero entre 11 y 19.


=SI(Y(B1>10;B1<20)


Como argumento valor si verdadero, ponemos un texto en blanco, como argumento valor si falso, es la función FILTRAR, cerramos paréntesis.


=SI(Y(B1>10;B1<20);"";FILTRAR(I1:I9;H1:H9=ABS(EXTRAE(B1;CONTARA(EXTRAE(B1;SECUENCIA(LARGO(B1));1));1));""))


Aceptamos, y, vemos que ya no aparece el número uno.






Probamos con otros números para ver que todo va bien.


Ahora, vamos donde poner la letra “y”, que lo haremos en la celda B6.


Vamos a preguntar con el condicional SI, donde como argumento prueba lógica, usamos el operador lógico O, preguntamos si el primer valor por la derecha de la celda B1 es igual a cero, es el argumento valor logico1, como argumento valor logico2, usamos el operador lógico Y, donde preguntamos si el valor de la celda B1 es mayor a 0, y, menor a 30, es decir, un numero entre 1 y 29, el operador lógico O nos devolverá VERDADERO con que una de las condiciones se cumpla, bien, si el primer digito por la derecha es igual a cero, o, el valor es mayor a 1, y, menor a 30.


=SI(O(ABS(DERECHA(B1))=0;Y(B1>0;B1<30))


Como argumento valor si verdadero, ponemos un texto en blanco, como argumento valor si falso, ponemos la letra “y”, con un espacio delante y detrás de la letra.


Cerramos paréntesis.


=SI(O(ABS(DERECHA(B1))=0;Y(B1>0;B1<30));"";" y ")


Aceptamos, ponemos el número 21, vemos que aparece Veinti uno, sin la letra “y”.





Vamos a poner el numero 34, vemos que aparece treinta y cuatro.





Pongamos un numero entre 10 y 20, vemos que solo aparece el número 4.





Lo siguiente va a ser unir carácter 2, letra “y”, y, 1 carácter, es este orden, para ello, vamos a la expresión de 2 carácter, seleccionamos la expresión, excepto el signo igual, copiamos, vamos a la celda C1, ponemos el signo igual, y, pegamos.


Como tenemos el número 45, aparece cuarenta.


Vamos a la expresión letra “y, hacemos igual que antes, vamos a la celda C1, después de la expresión, ponemos el símbolo de concatenar (&), y, pegamos la expresión.


=SI.ERROR(LET(pri_car;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(B1;SECUENCIA(LARGO(B1));1)));1);1));seg_car;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));2);1));SI(Y(seg_car=1;pri_car<>0);BUSCARX(ABS(seg_car&pri_car);H11:H19;I11:I19;"");SI((seg_car=2)*(pri_car<>0);"Veinti";SI((seg_car=2)*(pri_car=0);"Veinte";SI((seg_car<>2);BUSCARX(seg_car;H1:H9;K1:K9;"");"")))));"")&SI(Y(B1>0;B1<30);"";" y ")


Vamos a la expresión 1 carácter, volvemos a copiarla, vamos a la celda C1, al final de la expresión, volvemos a concatenar, y, pegamos la expresión.


=SI.ERROR(LET(pri_car;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(B1;SECUENCIA(LARGO(B1));1)));1);1));seg_car;ABS(EXTRAE(B1;K.ESIMO.MAYOR(SECUENCIA(LARGO(B1));2);1));SI(Y(seg_car=1;pri_car<>0);BUSCARX(ABS(seg_car&pri_car);H11:H19;I11:I19;"");SI((seg_car=2)*(pri_car<>0);"Veinti";SI((seg_car=2)*(pri_car=0);"Veinte";SI((seg_car<>2);BUSCARX(seg_car;H1:H9;K1:K9;"");"")))));"")&SI(Y(B1>0;B1<30);"";" y ")&SI(Y(B1>10;B1<20);"";FILTRAR(I1:I9;H1:H9=ABS(EXTRAE(B1;CONTARA(EXTRAE(B1;SECUENCIA(LARGO(B1));1));1));""))


Vemos que aparece 45 en letras.





Ponemos el número 5, vemos que solo aparece la palabra cinco.





Vamos a poner el numero 21, vemos que aparece veintiuno.





Hasta aquí todo bien, pero solo lo podemos usar en esta hoja, para usarlo en otro libro, vamos a hacer uso de la función LAMBDA.


Después del signo igual, ponemos LAMBDA, declaramos una variable.


=LAMBDA(a


Punto y coma, como argumento calculo es la expresión que tenemos, cerramos paréntesis de LAMBDA, abrimos otro paréntesis, ponemos la celda B1, que es el valor que va a tener la variable “a”, cerramos paréntesis.


Sustituimos B1 de la expresión por la variable “a”.


=LAMBDA(a;SI.ERROR(LET(pri_car;ABS(EXTRAE(a;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(a;SECUENCIA(LARGO(a));1)));1);1));seg_car;ABS(EXTRAE(a;K.ESIMO.MAYOR(SECUENCIA(LARGO(a));2);1));SI(Y(seg_car=1;pri_car<>0);BUSCARX(ABS(seg_car&pri_car);H11:H19;I11:I19;"");SI((seg_car=2)*(pri_car<>0);"Veinti";SI((seg_car=2)*(pri_car=0);"Veinte";SI((seg_car<>2);BUSCARX(seg_car;H1:H9;K1:K9;"");"")))));"")&SI(Y(a>0;a<30);"";" y ")&SI(Y(a>10;a<20);"";FILTRAR(I1:I9;H1:H9=ABS(EXTRAE(a;CONTARA(EXTRAE(B1;SECUENCIA(LARGO(a));1));1));"")))(B1)


Fijamos las siguientes referencias.


=LAMBDA(a;SI.ERROR(LET(pri_car;ABS(EXTRAE(a;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(a;SECUENCIA(LARGO(a));1)));1);1));seg_car;ABS(EXTRAE(a;K.ESIMO.MAYOR(SECUENCIA(LARGO(a));2);1));SI(Y(seg_car=1;pri_car<>0);BUSCARX(ABS(seg_car&pri_car);$H$11:$H$19;$I$11:$I$19;"");SI((seg_car=2)*(pri_car<>0);"Veinti";SI((seg_car=2)*(pri_car=0);"Veinte";SI((seg_car<>2);BUSCARX(seg_car;$H$1:$H$9;$K$1:$K$9;"");"")))));"")&SI(Y(a>0;a<30);"";" y ")&SI(Y(a>10;a<20);"";FILTRAR($I$1:$I$9;$H$1:$H$9=ABS(EXTRAE(a;CONTARA(EXTRAE(B1;SECUENCIA(LARGO(a));1));1));"")))(B1)


Aceptamos, y, tenemos los mismos resultados.


Lo siguiente va a ser crear un nombre de rango con la expresión, excepto, la apertura y cierre de paréntesis después del cierre de paréntesis de la función LAMBDA.





Pulsamos CTRL mas C para copiar, vamos a la pestaña formulas, dentro del grupo nombres definidos, hacemos clic en asignar nombre.







En la ventana que se abre, como nombre ponemos conversión, en la ventana se refiere a, pegamos la expresión.










En un libro nuevo tenemos los siguientes valores.




















En la celda B1, de este libro nuevo, ponemos el nombre del libro, seguido de la extensión, ponemos el símbolo de exclamación, el nombre de rango, entre paréntesis, seleccionamos la celda A1, cerramos paréntesis.


=ejemplo.xlsx!conversion(A1)


Aceptamos, arrastramos, y, vemos el nombre en texto de cada valor.
















Con esto hemos corregido posibles errores, y, hemos probado que podemos usar este procedimiento en otro libro.



Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page