top of page

Recuento de letras entre cadenas

Para el siguiente ejemplo, tenemos una serie de cadenas:


Debemos de crear un reporte donde aparezca las letras únicas de cada cadena, junto con el número de veces que aparece cada cadena.


En la celda B2, usamos LET, creamos una variable, usamos la funcion EXTRAE, como argumento texto, ponemos la celda A2, como argumento posición inicial, usamos la funcion SECUENCIA, como argumento filas, usamos la funcion LARGO, como argumento ponemos la celda A2, como argumento numero de caracteres, ponemos 1, cerramos paréntesis, y, probamos variable.


=LET(a;EXTRAE(A2;SECUENCIA(LARGO(A2));1);a)


Tenemos una matriz desbordada en vertical con cada letra de la cadena de la celda A2.


Creamos otra variable, nos traemos los valores únicos de la variable “a”.


=LET(a;EXTRAE(A2;SECUENCIA(LARGO(A2));1);b;UNICOS(a);b)


Lo ponemos en horizontal con la funcion ENFILA.


=LET(a;EXTRAE(A2;SECUENCIA(LARGO(A2));1);b;ENFILA(UNICOS(a));b)

Ordenamos, para ello, usamos la funcion ORDENAR, como argumento matriz es la funcion ENFILA, omitimos el argumento ordenar índice, omitimos el argumento criterio de ordenación, como argumento bycol, seleccionamos ordenar por columnas.


=LET(a;EXTRAE(A2;SECUENCIA(LARGO(A2));1);b;ORDENAR(ENFILA(UNICOS(a));;;VERDADERO);b)


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


=LET(a;EXTRAE(A2;SECUENCIA(LARGO(A2));1);b;ORDENAR(ENFILA(UNICOS(a));;;VERDADERO);c;REDUCE("";b;LAMBDA(x;y


Como argumento calculo de LAMBDA, usamos la funcion APILARH, como argumento matriz1, ponemos la variable “x”, como argumento matriz2, usamos la funcion SUMA, como argumento, usamos el condicional SI, como argumento prueba lógica, ponemos la variable “a” e igualamos a la variable “y”, como argumento valor si verdadero, ponemos 1, como argumento valor si falso, ponemos 0.


=LET(a;EXTRAE(A2;SECUENCIA(LARGO(A2));1);b;ORDENAR(ENFILA(UNICOS(a));;;VERDADERO);c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SUMA(SI(a=y;1;0)))));c)

 

Tenemos una matriz desbordada de tres columnas, con las veces que aparece cada letra.


Usamos el argumento cálculo de LET, usamos la funcion UNIRCADENAS, como argumento delimitador, entre comillas dobles ponemos coma, y, dejamos un espacio, ignoramos celdas vacías, u, omitimos el argumento, como argumento texto1, ponemos la variable “b”, concatenamos con dos puntos, concatenamos con la funcion EXCLUIR, para quitar la primera columna, como argumento matriz, ponemos la variable “c”, omitimos el argumento filas, como argumento columnas, ponemos 1.


=LET(a;EXTRAE(A2;SECUENCIA(LARGO(A2));1);b;ORDENAR(ENFILA(UNICOS(a));;;VERDADERO);c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SUMA(SI(a=y;1;0)))));UNIRCADENAS(", ";VERDADERO;b&":"&EXCLUIR(c;;1)))


Aceptamos, arrastramos, y, ya lo tenemos.


Convertir esta expresión en matricial es muy fácil, en la expresión estamos usando la celda A2, debemos de indicar que trabaje con cada valor del rango A2:A10, para ello, después del signo igual, ponemos MAP, como argumento array, seleccionamos el rango A2:A10, como argumento LAMBDA, ponemos LAMBDA, declaramos una variable, como argumento cálculo de LAMBDA es la expresión que tenemos, pero cambiamos A2 por el nombre de la variable creada.


Cerramos paréntesis.


=MAP(A2:A10;LAMBDA(x;LET(a;EXTRAE(x;SECUENCIA(LARGO(x));1);b;ORDENAR(ENFILA(UNICOS(a));;;VERDADERO);c;REDUCE("";b;LAMBDA(x;y;APILARH(x;SUMA(SI(a=y;1;0)))));UNIRCADENAS(", ";VERDADERO;b&":"&EXCLUIR(c;;1)))))

 

Aceptamos, y, ya lo tenemos.



Miguel Angel Franco

 
 
 

Comentarios


© 2019 Miguel Ángel Franco García

bottom of page