union
- Jaime Franco Jimenez
- 2 jul 2023
- 2 Min. de lectura
Vamos ahora a unir todas las cadenas para tener la conversión en una sola celda, y, poder usarlo en otro libro, para ello, en la celda A3, vamos a usar la función LAMBDA, y, creamos una variable, debemos de sustituir la celda B1 por el nombre de la variable.
=LAMBDA(y
Pegamos la expresión del campo 7 carácter, y, concatenamos con un espacio.
=LAMBDA(y;SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));7);1));SI(x>1;BUSCARX(x;$H$2:$H$9;$I$2:$I$9;"")&" Millones";"Un millon"));"")&" "
Concatenamos con la expresión del campo 6 carácter, y un espacio.
=LAMBDA(y
;SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));7);1));SI(x>1;BUSCARX(x;$H$2:$H$9;$I$2:$I$9;"")&" Millones";"Un millon"));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));6);1));SI(Y(x=1;SUMA(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{1;2;3;4;5});1)))=0);"Cien";BUSCARX(x;$H$1:$H$9;$L$1:$L$9;"")));"")&" "
Concatenamos con el campo 5 carácter y un espacio.
=LAMBDA(y;
SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));7);1));SI(x>1;BUSCARX(x;$H$2:$H$9;$I$2:$I$9;"")&" Millones";"Un millon"));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));6);1));SI(Y(x=1;SUMA(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{1;2;3;4;5});1)))=0);"Cien";BUSCARX(x;$H$1:$H$9;$L$1:$L$9;"")));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{5;4});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)>=1;INDICE(x;2)<=9);BUSCARX(ABS(CONCAT(x));$H$10:$H$19;$I$10:$I$19;"");SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(INDICE(x;1)=0;"";SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"")&" y "&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(Y(INDICE(x;1)<>0;INDICE(x;2)=0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"");""))))));"")&" "
Concatenamos con el campo 4 carácter y un espacio.
=LAMBDA(y
;SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));7);1));SI(x>1;BUSCARX(x;$H$2:$H$9;$I$2:$I$9;"")&" Millones";"Un millon"));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));6);1));SI(Y(x=1;SUMA(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{1;2;3;4;5});1)))=0);"Cien";BUSCARX(x;$H$1:$H$9;$L$1:$L$9;"")));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{5;4});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)>=1;INDICE(x;2)<=9);BUSCARX(ABS(CONCAT(x));$H$10:$H$19;$I$10:$I$19;"");SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(INDICE(x;1)=0;"";SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"")&" y "&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(Y(INDICE(x;1)<>0;INDICE(x;2)=0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"");""))))));"")&" "&SI($B$10<>"";"Mil";SI(LARGO(y)<4;"";BUSCARX(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));4);1));$H$1:$H$9;$M$1:$M$9;"")))& " "
Concatenamos con el campo 3 carácter y un espacio.
=LAMBDA(y
;SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));7);1));SI(x>1;BUSCARX(x;$H$2:$H$9;$I$2:$I$9;"")&" Millones";"Un millon"));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));6);1));SI(Y(x=1;SUMA(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{1;2;3;4;5});1)))=0);"Cien";BUSCARX(x;$H$1:$H$9;$L$1:$L$9;"")));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{5;4});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)>=1;INDICE(x;2)<=9);BUSCARX(ABS(CONCAT(x));$H$10:$H$19;$I$10:$I$19;"");SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(INDICE(x;1)=0;"";SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"")&" y "&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(Y(INDICE(x;1)<>0;INDICE(x;2)=0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"");""))))));"")&" "&SI($B$10<>"";"Mil";SI(LARGO(y)<4;"";BUSCARX(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));4);1));$H$1:$H$9;$M$1:$M$9;"")))&" "&LET(a;SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));SI(Y(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;1);1))=0;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;2);1));"")=0;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;3);1));"")=1);"Cien";BUSCARX(SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;3);1));"");$H$1:$H$9;$L$1:$L$9;"")))&" "
Concatenamos con el campo 2 carácter y un espacio.
=LAMBDA(y
;SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));7);1));SI(x>1;BUSCARX(x;$H$2:$H$9;$I$2:$I$9;"")&" Millones";"Un millon"));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));6);1));SI(Y(x=1;SUMA(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{1;2;3;4;5});1)))=0);"Cien";BUSCARX(x;$H$1:$H$9;$L$1:$L$9;"")));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{5;4});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)>=1;INDICE(x;2)<=9);BUSCARX(ABS(CONCAT(x));$H$10:$H$19;$I$10:$I$19;"");SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(INDICE(x;1)=0;"";SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"")&" y "&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(Y(INDICE(x;1)<>0;INDICE(x;2)=0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"");""))))));"")&" "&SI($B$10<>"";"Mil";SI(LARGO(y)<4;"";BUSCARX(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));4);1));$H$1:$H$9;$M$1:$M$9;"")))&" "&LET(a;SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));SI(Y(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;1);1))=0;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;2);1));"")=0;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;3);1));"")=1);"Cien";BUSCARX(SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;3);1));"");$H$1:$H$9;$L$1:$L$9;"")))&" "&LET(a; SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));pri_car;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));1);1));seg_car;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));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;"");"")))))&" "
Concatenamos con el campo 1 carácter.
=LAMBDA(y
;SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));7);1));SI(x>1;BUSCARX(x;$H$2:$H$9;$I$2:$I$9;"")&" Millones";"Un millon"));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));6);1));SI(Y(x=1;SUMA(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{1;2;3;4;5});1)))=0);"Cien";BUSCARX(x;$H$1:$H$9;$L$1:$L$9;"")));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{5;4});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)>=1;INDICE(x;2)<=9);BUSCARX(ABS(CONCAT(x));$H$10:$H$19;$I$10:$I$19;"");SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(INDICE(x;1)=0;"";SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"")&" y "&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(Y(INDICE(x;1)<>0;INDICE(x;2)=0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"");""))))));"")&" "&SI($B$10<>"";"Mil";SI(LARGO(y)<4;"";BUSCARX(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));4);1));$H$1:$H$9;$M$1:$M$9;"")))&" "&LET(a;SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));SI(Y(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;1);1))=0;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;2);1));"")=0;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;3);1));"")=1);"Cien";BUSCARX(SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;3);1));"");$H$1:$H$9;$L$1:$L$9;"")))&" "&LET(a; SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));pri_car;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));1);1));seg_car;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));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(O(ABS(DERECHA(y))=0;Y(ABS(DERECHA(y;2))>0;ABS(DERECHA(y;2))<30));"";"y")&" "&SI((ABS(DERECHA(y;2))>=11)*(ABS(DERECHA(y;2))<=19);"";FILTRAR($I$1:$I$9;$H$1:$H$9=ABS(DERECHA(y));""))&SI($B$12="";"";" Mil")
Cerramos paréntesis de LAMBDA, abrimos otro paréntesis, ponemos la celda que va a sustituir la variable, que es B1, cerramos paréntesis.
=LAMBDA(y;SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));7);1));SI(x>1;BUSCARX(x;$H$2:$H$9;$I$2:$I$9;"")&" Millones";"Un millon"));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));6);1));SI(Y(x=1;SUMA(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{1;2;3;4;5});1)))=0);"Cien";BUSCARX(x;$H$1:$H$9;$L$1:$L$9;"")));"")&" "&SI.ERROR(LET(x;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));{5;4});1));SI(Y(INDICE(x;1)=1;INDICE(x;2)>=1;INDICE(x;2)<=9);BUSCARX(ABS(CONCAT(x));$H$10:$H$19;$I$10:$I$19;"");SI(Y(INDICE(x;1)=2;INDICE(x;2)<>0);"Veinti"&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(INDICE(x;1)=0;"";SI(Y(INDICE(x;1)<>2;INDICE(x;2)<>0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"")&" y "&BUSCARX(INDICE(x;2);$H$1:$H$9;$I$1:$I$9;"");SI(Y(INDICE(x;1)<>0;INDICE(x;2)=0);BUSCARX(INDICE(x;1);$H$1:$H$9;$K$1:$K$9;"");""))))));"")&" "&SI($B$10<>"";"Mil";SI(LARGO(y)<4;"";BUSCARX(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(LARGO(y));4);1));$H$1:$H$9;$M$1:$M$9;"")))&" "&LET(a;SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));SI(Y(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;1);1))=0;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;2);1));"")=0;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;3);1));"")=1);"Cien";BUSCARX(SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(a;3);1));"");$H$1:$H$9;$L$1:$L$9;"")))&" "&LET(a; SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));pri_car;ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));1);1));seg_car;SI.ERROR(ABS(EXTRAE(y;K.ESIMO.MAYOR(SECUENCIA(CONTARA(EXTRAE(y;SECUENCIA(LARGO(y));1)));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(O(ABS(DERECHA(y))=0;Y(ABS(DERECHA(y;2))>0;ABS(DERECHA(y;2))<30));"";"y")&" "&SI((ABS(DERECHA(y;2))>=11)*(ABS(DERECHA(y;2))<=19);"";FILTRAR($I$1:$I$9;$H$1:$H$9=ABS(DERECHA(y));""))&SI($B$12="";"";" Mil"))(B1)
Aceptamos, y, vemos que tenemos el texto al que corresponde el valor de la celda B1.

Vemos que entre trecientos y nueve hay un espacio de más, si ponemos el numero 8 hay espacios de más delante del número, para solventar el problema, vamos a poner la función ESPACIOS después de la declaración de la variable “y”, abrimos un paréntesis, y, cerramos el paréntesis después del cierre de paréntesis del último SI.

Debemos de modificar el nombre de rango, para ello, volvemos a seleccionar la expresión, excepto, la apertura de paréntesis, la celda B1, y, cierre de paréntesis después del cierre de paréntesis de LAMBDA, pulsamos CTRL mas C para copiar, vamos a la pestaña de fórmulas, dentro de nombres definidos, hacemos clic en administrador de nombres.

Se abre la ventana de administrador de nombres seleccionamos el nombre conversión, y, hacemos clic en modificar.

Hacemos clic en el siguiente icono:

Aparece seleccionada la expresión, la borramos, y, pulsamos CTRL más V para pegar.
Aceptamos, vamos a al siguiente libro, donde tenemos los siguientes valores:

En la celda B2, ponemos el nombre del libro junto con la extensión, ponemos signo de exclamación, ponemos el nombre de rango conversión, entre paréntesis, ponemos la celda A2.
=ejemplo.xlsx!conversion(A2)
Aceptamos, arrastramos, y, vemos el texto al que corresponde cada valor.

Probemos en la siguiente columna.



Miguel Angel Franco
Comments