Grupos y valores
- Jaime Franco Jimenez

- 12 dic 2023
- 2 Min. de lectura
Tenemos un modelo formado por seis columnas, donde tenemos letras, y, cada letra tiene asignado un valor.
Debemos de crear un modelo donde en una primera columna debe de aparecer cada letra, pero, debemos de ir saltando una letra desde la primera.
En una segunda columna, debe de aparecer cada letra, pero en este caso, debemos de ir saltando una letra a partir de la segunda letra.
Por último, en una columna debe de aparecer el valor para el primer conjunto de datos, y, en una segunda columna, los valores para el segundo conjunto de letras.
El modelo debe de quedar como sigue:
En la celda H2, usamos LET, creamos una variable, seleccionamos el modelo de datos.
=LET(xx;A2:F9;xx)
Creamos otra variable, usamos ENCOL, como argumento matriz, preguntamos si es texto la variable “xx”, en ese caso, que devuelva dicha variable, en caso contrario, que devuelva error, como argumento ignorar de ENCOL, seleccionamos 3, ignorar blancos y errores.
=LET(xx;A2:F9;a;ENCOL(SI(ESTEXTO(xx);xx;NOD());3);a)
Tenemos solo las letras.
Creamos otra variable, es la misma expresión que para la variable “a”, pero en vez de preguntar si es texto, preguntamos si es número.
=LET(xx;A2:F9;a;ENCOL(SI(ESTEXTO(xx);xx;NOD());3);b;ENCOL(SI(ESNUMERO(xx);xx;NOD());3);b)
Tenemos los números.
Creamos otra variable, usamos SECUENCIA, como argumento filas, usamos CONTARA, como argumento valor1, ponemos la variable “a”.
=LET(xx;A2:F9;a;ENCOL(SI(ESTEXTO(xx);xx;NOD());3);b;ENCOL(SI(ESNUMERO(xx);xx;NOD());3);c;SECUENCIA(CONTARA(a));c)
Tenemos una secuencia de números desde el numero 1 al número 17.
Creamos otra variable, preguntamos que, si es impar la variable “c”, pues, usamos APILARH, como argumento matriz1, ponemos la variable “a”, como argumento matriz2, ponemos la variable “b”.
=LET(xx;A2:F9;a;ENCOL(SI(ESTEXTO(xx);xx;NOD());3);b;ENCOL(SI(ESNUMERO(xx);xx;NOD());3);c;SECUENCIA(CONTARA(a));d;SI(ES.IMPAR(c );APILARH(a;b);"");d)
Tenemos las letras impares junto con su valor.
Creamos otra variable, filtramos la variable “d”, siempre que la primera columna de la variable “d”, por lo que usamos la función TOMAR, sea diferente a blanco.
=LET(xx;A2:F9;a;ENCOL(SI(ESTEXTO(xx);xx;NOD());3);b;ENCOL(SI(ESNUMERO(xx);xx;NOD());3);c;SECUENCIA(CONTARA(a));d;SI(ES.IMPAR(c );APILARH(a;b);"");e;FILTRAR(d;TOMAR(d;;1)<>"");e)
Ya hemos quitado los blancos.
Creamos otra variable, es la misma expresión que para la variable “d”, pero en este caso, preguntamos si es par.
=LET(xx;A2:F9;a;ENCOL(SI(ESTEXTO(xx);xx;NOD());3);b;ENCOL(SI(ESNUMERO(xx);xx;NOD());3);c;SECUENCIA(CONTARA(a));d;SI(ES.IMPAR(c );APILARH(a;b);"");e;FILTRAR(d;TOMAR(d;;1)<>"");f;SI(ES.PAR(c );APILARH(a;b);"");f)
Creamos otra variable, y, la filtramos igual que antes.
=LET(xx;A2:F9;a;ENCOL(SI(ESTEXTO(xx);xx;NOD());3);b;ENCOL(SI(ESNUMERO(xx);xx;NOD());3);c;SECUENCIA(CONTARA(a));d;SI(ES.IMPAR(c );APILARH(a;b);"");e;FILTRAR(d;TOMAR(d;;1)<>"");f;SI(ES.PAR(c );APILARH(a;b);"");g;FILTRAR(f;TOMAR(f;;1)<>"");g)
Tenemos las letras pares, y, sus cantidades correspondientes.
Usamos el argumento calculo de LET, ponemos APILARH, como argumento matriz1, con la función TOMAR, tomamos la columna 1 de la variable “e”, como argumento matriz2, tomamos la columna 1 de la variable “g”, como argumento matriz3, tomamos la ultima columna de la variable “e”, como argumento matriz4, tomamos la ultima columna de la variable “g”.
=LET(xx;A2:F9;a;ENCOL(SI(ESTEXTO(xx);xx;NOD());3);b;ENCOL(SI(ESNUMERO(xx);xx;NOD());3);c;SECUENCIA(CONTARA(a));d;SI(ES.IMPAR(c );APILARH(a;b);"");e;FILTRAR(d;TOMAR(d;;1)<>"");f;SI(ES.PAR(c );APILARH(a;b);"");g;FILTRAR(f;TOMAR(f;;1)<>"");APILARH(TOMAR(e;;1);TOMAR(g;;1);TOMAR(e;;-1);TOMAR(g;;-1)))
Aceptamos y ya lo tenemos, aunque con algunos errores.
Usamos antes de APILARH, la función SI.ERROR, como argumento valor, es la función APILARH, como argumento valor si error, ponemos blanco.
=LET(xx;A2:F9;a;ENCOL(SI(ESTEXTO(xx);xx;NOD());3);b;ENCOL(SI(ESNUMERO(xx);xx;NOD());3);c;SECUENCIA(CONTARA(a));d;SI(ES.IMPAR(c );APILARH(a;b);"");e;FILTRAR(d;TOMAR(d;;1)<>"");f;SI(ES.PAR(c );APILARH(a;b);"");g;FILTRAR(f;TOMAR(f;;1)<>"");SI.ERROR(APILARH(TOMAR(e;;1);TOMAR(g;;1);TOMAR(e;;-1);TOMAR(g;;-1));""))
Ya tenemos nuestro ejemplo resuelto.
Miguel Angel Franco














Comentarios