Equipos que han ganado la Copa Mundial de la FIFA de forma consecutiva
- Jaime Franco Jimenez

- 30 nov 2023
- 2 Min. de lectura
Debemos de listar los equipos que han ganado la Copa Mundial de la FIFA de forma consecutiva y años de sus victorias consecutivas.
He cambiado el ganador de 1966 a Brasil desde Inglaterra y el ganador de 1998 a Brasil desde Francia.
Partimos de los siguientes datos:
Vamos a usar LET, creamos una variable, usamos SCAN, como argumento valor inicial, ponemos 0, como argumento array, seleccionamos el rango B2:B22.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));a)
Obtenemos una matriz desbordada en vertical, donde vemos que donde el país es el mismo, aparece con el mismo número.
Creamos otra variable, usamos FRECUENCIA, como argumento datos, ponemos la variable “a”, como argumento grupos, volvemos a poner la variable “a”.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;FRECUENCIA(a;a);b)
Obtenemos 1 donde el país solo aparece una vez, 0, cuando no aparece, y, mas de 1, que son las veces que aparece cada país de forma consecutiva.
Sabemos que la funcion FRECUENCIA, devuelve una celda mas con el valor cero, pues, usamos EXCLUIR, como argumento matriz, es la funcion FRECUENCIA, como argumento filas, ponemos -1.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);b)
Creamos otra variable, preguntamos si la variable “b” es mayor a 1, en ese caso, que devuelva el rango B2:B22, en caso contrario, que devuelva un error.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;SI(b>1;B2:B22;NOD());c)
Tenemos la provincia donde la variable “b” es mayor a 1, y, error donde no hay coincidencia.
Usamos ENCOL, como argumento matriz es el condicional SI, como argumento ignorar, seleccionamos 3, es decir, ignorar blancos y errores.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;ENCOL(SI(b>1;B2:B22;NOD());3);c)
Ya tenemos los países con fechas consecutivas.
Creamos otra variable, abrimos un paréntesis, ponemos la variable “b” e igualamos a 0, cerramos paréntesis, ponemos el símbolo de más, abrimos otro paréntesis, ponemos la variable “v” y comparamos con mayor a 1, de la variable “b”, nos interesan los valores que son mayores a 1, e, igual a cero, de esta manera, conseguimos las fechas consecutivas.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;ENCOL(SI(b>1;B2:B22;NOD());3);d;(b=0)+(b>1);d)
Creamos otra variable, preguntamos si la variable “d” es igual a 1, que devuelva el rango A2:A22, en caso contrario, que devuelva la barra inclinada.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;ENCOL(SI(b>1;B2:B22;NOD());3);d;(b=0)+(b>1);e;SI(d;A2:A22;"/");e)
Volvemos a la expresión de la variable “e”, usamos UNIRCADENAS, como argumento delimitador, ponemos un espacio, ignoramos celdas vacías, como argumento texto1, es el condicional SI.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;ENCOL(SI(b>1;B2:B22;NOD());3);d;(b=0)+(b>1);e;UNIRCADENAS(" ";VERDADERO;SI(d;A2:A22;"/"));e)
Tenemos las fechas en una fila, donde vemos que cada grupo de fechas que pertenecen a cada país, están separadas por la barra inclinada.
Usamos DIVIDIRTERXTO, como argumento texto es la funcion UNIRCADENAS, ignoramos el argumento delimitador de columna, como argumento delimitador de fila, entre comillas dobles, ponemos la barra inclinada.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;ENCOL(SI(b>1;B2:B22;NOD());3);d;(b=0)+(b>1);e;DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;SI(d;A2:A22;"/"));;"/");e)
Tenemos las fechas de cada país.
Pero, vemos que delante de la primera fecha hay un espacio, por lo que usamos la funcion ESPACIOS.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;ENCOL(SI(b>1;B2:B22;NOD());3);d;(b=0)+(b>1);e;ESPACIOS(DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;SI(d;A2:A22;"/"));;"/"));e)
Creamos otra variable, filtramos la variable “e”, siempre que dicha variable sea diferente a blanco.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;ENCOL(SI(b>1;B2:B22;NOD());3);d;(b=0)+(b>1);e;ESPACIOS(DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;SI(d;A2:A22;"/"));;"/"));f;FILTRAR(e;e<>"");f)
Ya tenemos las fechas de cada país.
Usamos SUSTITUIR, como argumento texto, es la funcion FILTRAR, como argumento texto original, ponemos un espacio, como argumento texto nuevo, entre comillas dobles, ponemos coma.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;ENCOL(SI(b>1;B2:B22;NOD());3);d;(b=0)+(b>1);e;ESPACIOS(DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;SI(d;A2:A22;"/"));;"/"));f;SUSTITUIR(FILTRAR(e;e<>"");" ";",");f)
Tenemos las fechas separadas por coma.
Usamos el argumento calculo de LET, usamos APILARH, como argumento matriz1, ponemos la variable “c”, como argumento matriz2, ponemos la variable “f”.
=LET(a;SCAN(0;B2:B22;LAMBDA(a;d;SI(DESREF(d;-1;)=d;a;a+1)));b;EXCLUIR(FRECUENCIA(a;a);-1);c;ENCOL(SI(b>1;B2:B22;NOD());3);d;(b=0)+(b>1);e;ESPACIOS(DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;SI(d;A2:A22;"/"));;"/"));f;SUSTITUIR(FILTRAR(e;e<>"");" ";",");APILARH(c;f))
Aceptamos, y, ya lo tenemos.
Miguel Angel Franco


















Comentarios