Debemos de escribir las palabras de 3 caracteres usando "A", "B", C" y "D", es decir, una combinación.
En una celda, usamos LET, creamos una variable, vamos a usar una constante de matriz, abrimos llaves, entre comillas dobles, ponemos las letras a,b,c, y, d, separados por punto y coma, cerramos llaves.
=LET(xx;{"a";"b";"c";"d"};xx)
Tenemos en vertical las letras a,b,c, y, d.
Creamos otra variable, volvemos a usar una constante de matriz, abrimos llaves, ponemos los números 1,2,3, y, 4, cerramos llaves, vamos a tener en vertical los números 1,2,3, y,4.
=LET(xx;{"a";"b";"c";"d"};yy;{1;2;3;4};yy)
Para cada letra, debemos de realizar 19 combinaciones, creamos otra variable, usamos la funcion SECUENCIA, como argumento filas, ponemos 9*4, omitimos el argumento columnas, como argumento inicio, ponemos 111.
A la letra “a” le vamos a asignar el valor 1, a la letra “b” el valor 2, a la letra “c” el valor 3, y, a la letra “d” el valor 4.
=LET(xx;{"a";"b";"c";"d"};yy;{1;2;3;4};a;SECUENCIA(9*4;;111);a)
Vamos a probar con la primera combinación, que es con la letra “a”, ¿Por qué ponemos 36?, porque va a ser la combinación desde el numero 1 al numero 9, como tenemos que hacer 4 combinaciones, una por letra, multiplicamos 9 por 4, y, nos devuelve 36.
Tenemos una matriz desbordada en vertical empezando desde el numero 111 hasta el número 146.
Si sustituimos cada número por su letra, el numero 111 corresponde a “aaa”, el numero 112, corresponde a “aab”, el numero 113, corresponde a “aac”, así con el resto.
Debemos de deshacernos de los números que sean mayores a 0, y, menores o igual a 4.
Creamos otra variable, usamos la función EXTRAE, como argumento texto ponemos la variable “a”, como argumento numero de caracteres, usamos la funcion SECUENCIA, omitimos el argumento filas, como argumento columnas, ponemos 3, que son los números que tenemos, como argumento numero de caracteres, ponemos 1, multiplicamos por 1, para que el resultado nos lo de en formato de número.
=LET(xx;{"a";"b";"c";"d"};yy;{1;2;3;4};a;SECUENCIA(9*4;;111);b;EXTRAE(a;SECUENCIA(;3);1)*1;b)
Vamos a dividir los números para poder después buscarlos.
Solo nos interesan los números entre 1 y 4, creamos otra variable, abrimos paréntesis, ponemos la variable “b” y comparamos con mayor a 0, cerramos paréntesis, ponemos el símbolo de asterisco, abrimos otra paréntesis, ponemos la variable “b”, y, comparamos con menor o igual a 4, cerramos paréntesis.
=LET(xx;{"a";"b";"c";"d"};yy;{1;2;3;4};a;SECUENCIA(9*4;;111);b;EXTRAE(a;SECUENCIA(;3);1)*1;c;(b>0)*(b<=4);c)
Tenemos 1 donde hay coincidencia, y, 0 donde no la hay.
Antes de las condiciones usamos BYROW, como argumento array son las condiciones, como argumento funcion, seleccionamos SUMA.
Donde se encuentra el valor 3, quiere decir que las tres condiciones se cumplen.
Creamos otra variable, filtramos la variable “b”, siempre que la variable “c” sea igual a 3.
=LET(xx;{"a";"b";"c";"d"};yy;{1;2;3;4};a;SECUENCIA(9*4;;111);b;EXTRAE(a;SECUENCIA(;3);1)*1;c;BYROW((b>0)*(b<=4);SUMA);d;FILTRAR(b;c=3);d)
Ya tenemos las combinaciones para la primera letra.
Creamos otra variable, usamos la funcion BUSCARX, como argumento valor buscado, ponemos la variable “d”, como argumento matriz de búsqueda, ponemos la variable “yy”, como argumento matriz devuelta, ponemos la variable “xx”.
=LET(xx;{"a";"b";"c";"d"};yy;{1;2;3;4};a;SECUENCIA(9*4;;111);b;EXTRAE(a;SECUENCIA(;3);1)*1;c;BYROW((b>0)*(b<=4);SUMA);d;FILTRAR(b;c=3);e;BUSCARX(d;yy;xx);e)
Antes de BUSCARX, usamos la funcion BYROW, como argumento array es la funcion BUSCARX, como argumento funcion, ponemos LAMBDA, declaramos una variable, usamos la funcion UNIRCADENAS, como argumento delimitador, ponemos dobles comillas dobles, ignoramos celdas vacías, como argumento texto1, ponemos la variable creada.
=LET(xx;{"a";"b";"c";"d"};yy;{1;2;3;4};a;SECUENCIA(9*4;;111);b;EXTRAE(a;SECUENCIA(;3);1)*1;c;BYROW((b>0)*(b<=4);SUMA);d;FILTRAR(b;c=3);e;BYROW(BUSCARX(d;yy;xx);LAMBDA(x;UNIRCADENAS("";VERDADERO;x)));e)
Ya tenemos las combinaciones para la primera letra.
Vamos a la variable “a”, el argumento filas lo volvemos a multiplicar por 9, que son las combinaciones totales.
=LET(xx;{"a";"b";"c";"d"};yy;{1;2;3;4};a;SECUENCIA(9*4*9;;111);b;EXTRAE(a;SECUENCIA(;3);1)*1;c;BYROW((b>0)*(b<=4);SUMA);d;FILTRAR(b;c=3);e;BYROW(BUSCARX(d;yy;xx);LAMBDA(x;UNIRCADENAS("";VERDADERO;x)));e)
Lo tenemos, pero, si vamos al final, vemos que llega hasta “dcd”, quiere decir que falta una combinación, pues, a la operación anterior, sumamos 10.
=LET(xx;{"a";"b";"c";"d"};yy;{1;2;3;4};a;SECUENCIA((9*4*9)+10;;111);b;EXTRAE(a;SECUENCIA(;3);1)*1;c;BYROW((b>0)*(b<=4);SUMA);d;FILTRAR(b;c=3);e;BYROW(BUSCARX(d;yy;xx);LAMBDA(x;UNIRCADENAS("";VERDADERO;x)));e)
Ahora, si lo tenemos.
Miguel Angel Franco Garcia
Comments