top of page

Frutas por jardin

Tenemos una columna con una serie de jardines, y, en la siguiente columna, tenemos las frutas, que puede ser manzana o mango, algunas en singular, y, otras en plural.
















Debemos de crear un modelo, con dos encabezados, el primer encabezado debe de ser manzana, y, el segundo encabezado, debe de ser mango.


En la columna de manzana, si en un jardín hay mas de una manzana, debe de aparecer “Únicos:”, y, el numero de manzanas, si solo hay una, debe de aparecer solo la palabra “Único”, lo mismo para mango.


Vemos que, en la columna de frutas, aparece tanto la fruta en singular como en plural, debemos de trabajar con cada fruta en singular, por lo que, en una columna al lado de la columna de frutas, vamos a crear las frutas en singular.


En la celda C2, usamos LET, creamos una variable, y, seleccionamos el rango B2:B14, probamos variable.


=LET(xx;B2:B14;xx)



















Creamos otra variable, usamos la funcion EXTRAE, como argumento texto, ponemos la variable “xx”, como argumento posición inicial, usamos la funcion SECUENCIA, omitimos el argumento filas, como argumento columnas, ponemos la funcion MAX, como argumento de MAX; usamos la funcion LARGO, y, como argumento ponemos la variable “xx”, como argumento número de caracteres, ponemos 1.


=LET(xx;B2:B14;a;EXTRAE(xx;SECUENCIA(;MAX(LARGO(xx)));1);a)


Obtenemos una matriz desbordada con las mismas filas que frutas hay, con cada carácter de cada fruta.














Creamos otra variable, usamos la funcion ENCONTRAR, como argumento texto buscado, entre comillas dobles, ponemos la letra “s”, como argumento dentro del texto, ponemos la variable “a”.


=LET(xx;B2:B14;a;EXTRAE(xx;SECUENCIA(;MAX(LARGO(xx)));1);b;ENCONTRAR("s";a);b)


Tenemos una matriz desbordada con 1 que es la posición de la letra “s” y error donde no hay coincidencia.













Preguntamos si es error la funcion ENCONTRAR.


=LET(xx;B2:B14;a;EXTRAE(xx;SECUENCIA(;MAX(LARGO(xx)));1);b;ESERROR(ENCONTRAR("s";a));b)


Obtenemos VERDADERO donde es error, y, FALSO donde no lo es.














Preguntamos que, si es error, que devuelva la variable “a”, en caso contrario, que devuelva un blanco.


=LET(xx;B2:B14;a;EXTRAE(xx;SECUENCIA(;MAX(LARGO(xx)));1);b;SI(ESERROR(ENCONTRAR("s";a));a;"");b)


Vemos que ya tenemos las frutas en singular.













Vamos a usar la funcion UNIRCADENAS, que debemos de usarla con cada fila, por lo que vamos a usar BYROW, como argumento matriz, ponemos la variable “b”, como argumento funcion, ponemos LAMBDA, declaramos una variable, como argumento calculo, ponemos UNIRCADENAS, como argumento delimitador, ponemos dobles comillas dobles, ignoramos celdas vacías, como argumento texto1, ponemos la variable “x”.


=LET(xx;B2:B14;a;EXTRAE(xx;SECUENCIA(;MAX(LARGO(xx)));1);b;SI(ESERROR(ENCONTRAR("s";a));a;"");c;BYROW(b;LAMBDA(x;UNIRCADENAS("";VERDADERO;x)));c)


Ya lo tenemos.




















En la celda E1, ponemos LET, creamos una variable, usamos la funcion ENFILA, como argumento usamos UNICOS, y, como argumento de UNICOS, seleccionamos el rango C2#.


=LET(a;ENFILA(UNICOS(C2#));a)


Ya tenemos el encabezado.






Creamos otra variable, usamos la funcion CONTAR.SI.CONJUNTO, como argumento rango criterios1, seleccionamos las frutas en singular, como argumento criterio1, ponemos la variable “a”.


=LET(a;ENFILA(UNICOS(C2#));b;CONTAR.SI.CONJUNTO(C2#;a


Como argumento rango criterios2, seleccionamos el rango A2:A14, como argumento criterio2, son los valores únicos del rango A2:A14.


=LET(a;ENFILA(UNICOS(C2#));b;CONTAR.SI.CONJUNTO(C2#;a;A2:A14;UNICOS(A2:A14));b)


Aceptamos, y, ya tenemos la cantidad de frutas para cada jardín.










Seguimos…


Como argumento calculo de LET, usamos el condicional SI, como argumento prueba lógica, preguntamos si el valor de la variable “b” es igual a 1, en ese caso, que devuelva la palabra Único.


=LET(a;ENFILA(UNICOS(C2#));b;CONTAR.SI.CONJUNTO(C2#;a;A2:A14;UNICOS(A2:A14));SI(b=1;"Unico"


Como argumento valor si falso, ponemos otro condicional SI, como argumento prueba lógica, preguntamos si la variable “b” es mayor a 1, en ese caso, que devuelva la palabra “Únicos: “ concatenado con la variable “b”, en caso contrario, que devuelva un blanco.


=LET(a;ENFILA(UNICOS(C2#));b;CONTAR.SI.CONJUNTO(C2#;a;A2:A14;UNICOS(A2:A14));SI(b=1;"Unico";SI(b>1;"Unicos: "&b;"")))


Aceptamos.












Antes del condicional SI, ponemos la funcion APILARV, como argumento matriz1, ponemos la variable “a”, como argumento matriz2, es el condicional SI.


=LET(a;ENFILA(UNICOS(C2#));b;CONTAR.SI.CONJUNTO(C2#;a;A2:A14;UNICOS(A2:A14));APILARV(a;SI(b=1;"Unico";SI(b>1;"Unicos: "&b;""))))


Aceptamos, y, ya lo tenemos.















Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page