top of page
Foto del escritorJaime Franco Jimenez

Desdinamice la tabla de problemas

Tenemos el siguiente modelo:


Desdinamice la tabla de problemas y conviértala en una tabla de resultados.


Empecemos…


En la celda J2, usamos LET, creamos una variable, usamos la funcion ENFILA, como argumento matriz, seleccionamos el rango A1:H1, como argumento ignorar, seleccionamos 1, es decir, ignorar celdas en blanco.


=LET(xx;ENFILA(A1:H1;1);xx)

 

Tenemos en horizontal los datos de la primera fila.


Creamos otra variable, usamos la funcion SCAN, como argumento valor inicial ponemos blanco, como argumento array, seleccionamos el rango A1:H1, como argumento funcion, ponemos LAMBDA, y, declaramos dos variables.


=LET(xx;ENFILA(A1:H1;1);a;SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));a)

 

Hemos rellenado los blancos de la primera fila con el valor anterior.


Antes de SCAN, usamos APILARH, como argumento matriz1, es la funcion SCAN, como argumento matriz2, seleccionamos el rango A2:H5.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);a)


Este es el modelo con el que vamos a trabajar.


Creamos otra variable, usamos la funcion EXCLUIR, como argumento matriz ponemos la variable “a”, omitimos el argumento filas, como argumento columnas, ponemos 1.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);b)


Tenemos el modelo, excepto, la primera columna.


Creamos otra variable, usamos la funcion ELEGIRCOLS, como argumento matriz, ponemos la variable “a”, como argumento numero de fila1, ponemos 1.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;ELEGIRCOLS(a;1);c)

 

Tenemos la primera columna.


Antes de ELEGIRCOLS, usamos EXCLUIR, como argumento matriz es la funcion ELEGIRCOLS, como argumento filas, ponemos 2.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);c)


Tenemos los estudiantes.


Creamos otra variable, ponemos la variable “c”, concatenamos con un guion medio, concatenamos con la primera fila de la variable “b”.

=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);d;c&"-"&TOMAR(b;1);d)

 

Tenemos una matriz desbordada de tres filas, y, siete columnas, en la primera fila tenemos “X” unido con Country, Subject y Class, así como para “Y”, y, “Z”.


Creamos otra variable, usamos la funcion REDUCE, como valor inicial ponemos blanco, como array ponemos la variable “d”, como argumento funcion, ponemos LAMBDA, y, declaramos dos variables.

=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);d;c&"-"&TOMAR(b;1);e;REDUCE("";d;LAMBDA(x;y

 

Como argumento calculo, usamos APILARV, como argumento matriz1, ponemos la variable “x”, como argumento matriz2, usamos DIVIDIRTEXTO, como argumento texto, ponemos la variable “y”, como argumento delimitador de columna, entre comillas dobles, ponemos guion medio.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);d;c&"-"&TOMAR(b;1);e;REDUCE("";d;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));e)


Tenemos en la primera columna los estudiantes, y, en la segunda columna, la primera fila del modelo.


La primera fila está de más, antes de REDUCE, usamos EXCLUIR, como argumento matriz es la funcion REDUCE, como argumento filas, ponemos 1.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);d;c&"-"&TOMAR(b;1);e;EXCLUIR(REDUCE("";d;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));1);e)


Creamos otra variable, ponemos la variable “c”, concatenamos con un guion medio, concatenamos con la segunda fila de la variable “b”.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);d;c&"-"&TOMAR(b;1);e;EXCLUIR(REDUCE("";d;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));1);f;c&"-"&ELEGIRFILAS(b;2);f)

 

Tenemos cada estudiante unido con la segunda fila del modelo.


Creamos otra variable, usamos REDUCE, como valor inicial ponemos blanco, como array, ponemos la variable “f”, como argumento funcion, ponemos LAMBDA, y, declaramos dos variables.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);d;c&"-"&TOMAR(b;1);e;EXCLUIR(REDUCE("";d;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));1);f;c&"-"&ELEGIRFILAS(b;2);g;REDUCE("";f;LAMBDA(x;y

 

Como argumento calculo, usamos APIALRV, como argumento matriz1 ponemos la variable “x”, como argumento matriz2, usamos DIVIIDRTEXTO, como argumento texto, ponemos la variable “y”, como argumento delimitador de columna, entre comillas dobles ponemos guio medio.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);d;c&"-"&TOMAR(b;1);e;EXCLUIR(REDUCE("";d;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));1);f;c&"-"&ELEGIRFILAS(b;2);g;REDUCE("";f;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));g)

 

Tenemos cada estudiante unido con la segunda fila del modelo.


La primera fila, y, la primera columna está de más, antes de REDUCE, usamos EXCLUIR, como argumento matriz, es la funcion REDUCE, como argumento filas, ponemos 1, como argumento columnas, ponemos 1.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);d;c&"-"&TOMAR(b;1);e;EXCLUIR(REDUCE("";d;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));1);f;c&"-"&ELEGIRFILAS(b;2);g;EXCLUIR(REDUCE("";f;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));1;1);g)


Creamos otra variable, usamos APILARH, como argumento matriz1, ponemos la variable “e”, como argumento matriz2, ponemos la variable “g”, como argumento matriz3, usamos ENCOL, como argumento matriz, usamos EXCLUIR, como argumento matriz ponemos la variable “b”, como argumento filas, ponemos 2.


=LET(xx;ENFILA(A1:H1;1);a;APILARV(SCAN("";A1:H1;LAMBDA(x;y;SI(y="";x;y)));A2:H5);b;EXCLUIR(a;;1);c;EXCLUIR(ELEGIRCOLS(a;1);2);d;c&"-"&TOMAR(b;1);e;EXCLUIR(REDUCE("";d;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));1);f;c&"-"&ELEGIRFILAS(b;2);g;EXCLUIR(REDUCE("";f;LAMBDA(x;y;APILARV(x;DIVIDIRTEXTO(y;"-"))));1;1);h;APILARH(e;g;ENCOL(EXCLUIR(b;2)));h)

 

Ya lo tenemos.



Miguel Angel Franco Garcia

0 visualizaciones0 comentarios

Comments


bottom of page