top of page

Números entre paréntesis

Para el siguiente ejemplo tenemos una serie de cadenas.


Debemos de extraer de cada cadena los valores que hay entre paréntesis.


El resultado debe de ser el siguiente:


Empecemos…


En la celda B2, usamos LET, creamos una variable, usamos la función REDUCE, como argumento valor inicial, ponemos blanco, como argumento array, seleccionamos el rango A2:A10, como argumento función, ponemos LAMBDA, y, declaramos dos variables.


=LET(a;REDUCE("";A2:A10;LAMBDA(x;y


Como argumento cálculo de LAMBDA, usamos la función APILARV, como argumento matriz1, ponemos la variable “x”, como argumento matriz2, usamos la función DIVIDIRTEXTO, como argumento texto, ponemos la variable “y”, como argumento delimitador de columna, entre comillas dobles, ponemos una apertura de paréntesis.


Cerramos paréntesis.


Probamos variable.


=LET(a;REDUCE("";A2:A10;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"("))));a)


Tenemos una matriz desbordada de 10 filas, donde en cada fila, en cada celda, tenemos el texto antes y después de la apertura de paréntesis.


La primera fila está de más, antes de REDUCE, usamos la función EXCLUIR, como argumento matriz es la función REDUCE, como argumento filas ponemos 1, omitimos el argumento columnas.


=LET(a;EXCLUIR(REDUCE("";A2:A10;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"("))));1);a)


Creamos otra variable, usamos la función HALLAR, que no distingue entre mayúsculas, y, minúsculas, como argumento texto buscado, entre comillas dobles, ponemos un cierre de paréntesis, como argumento dentro del texto, ponemos la variable “a”.


=LET(a;EXCLUIR(REDUCE("";A2:A10;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"("))));1);b;HALLAR(")";a);b)

 

Tenemos la misma matriz desbordada que la anterior, pero, con la posición del cierre de paréntesis.


Creamos otra variable, usamos el condicional SI, como argumento prueba lógica, preguntamos si es numero la variable “b”, como argumento valor si verdadero, ponemos la variable “a”, como argumento valor si falso, ponemos blanco.


=LET(a;EXCLUIR(REDUCE("";A2:A10;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"("))));1);b;HALLAR(")";a);c;SI(ESNUMERO(b);a;"");c)

 

Tenemos la matriz desbordada anterior, donde tenemos las cadenas que contienen números.


Creamos otra variable, usamos la función TEXTOANTES, como argumento texto, ponemos la variable “c”, como argumento delimitador, entre comillas dobles, ponemos un cierre de paréntesis.


=LET(a;EXCLUIR(REDUCE("";A2:A10;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"("))));1);b;HALLAR(")";a);c;SI(ESNUMERO(b);a;"");d;TEXTOANTES(c;")");d)

 

Vemos que tenemos las cadenas donde hay números.


Usamos la función SI.ERROR, como argumento valor es la función TEXTOANTES, como argumento valor si error, ponemos blanco.


=LET(a;EXCLUIR(REDUCE("";A2:A10;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"("))));1);b;HALLAR(")";a);c;SI(ESNUMERO(b);a;"");d;SI.ERROR(TEXTOANTES(c;")");"");d)

 

Ahora aparece blanco donde había error.


Creamos otra variable, usamos el condicional SI, como argumento prueba lógica, preguntamos si es numero la multiplicación de la variable “d” por 1, como argumento valor si verdadero, ponemos la variable “d”, como argumento valor si falso, ponemos blanco.


=LET(a;EXCLUIR(REDUCE("";A2:A10;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"("))));1);b;HALLAR(")";a);c;SI(ESNUMERO(b);a;"");d;SI.ERROR(TEXTOANTES(c;")");"");e;SI(ESNUMERO(d*1);d;"");e)

 

Ya hemos extraído los números que hay entre paréntesis de cada cadena.


Usamos el argumento calculo de LET, usamos la función BYROW, como argumento array, ponemos la variable “e”, como argumento función, ponemos LAMBDA, declaramos una variable, como argumento calculo de LAMBDA, usamos la función UNIRCADENAS, como argumento delimitador, entre comillas dobles, ponemos coma, y, dejamos un espacio, ignoramos celdas vacías, como argumento texto1, ponemos la variable “x”.


=LET(a;EXCLUIR(REDUCE("";A2:A10;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"("))));1);b;HALLAR(")";a);c;SI(ESNUMERO(b);a;"");d;SI.ERROR(TEXTOANTES(c;")");"");e;SI(ESNUMERO(d*1);d;"");BYROW(e;LAMBDA(x;UNIRCADENAS(", ";VERDADERO;x))))


Aceptamos, y, ya lo tenemos.




Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page