Tenemos las siguientes cadenas:
Debemos extraer los caracteres cuya frecuencia es la máxima, y, también debemos de extraer la frecuencia máxima.
Este es un problema que distingue entre mayúsculas y minúsculas.
En la celda B3, usamos LET, creamos una variable, usamos la función EXTRAE, como argumento texto seleccionamos la celda A3, como argumento posición inicial, usamos la función SECUENCIA, como argumento filas usamos la función LARGO, como argumento ponemos la celda A3, como argumento número de caracteres, ponemos 1, vamos a extraer cada carácter de la celda A3.
=LET(a;EXTRAE(A3;SECUENCIA(LARGO(A3));1);a)
Antes de EXTRAE usamos la función CODIGO para obtener el código al que corresponde cada carácter extraído.
=LET(a;CODIGO(EXTRAE(A3;SECUENCIA(LARGO(A3));1));a)
Creamos otra variable, usamos la función FRECUENCIA, como argumento datos ponemos la variable “a”, como argumento grupos volvemos a poner la variable “a”, vamos a obtener las veces que aparece cada carácter.
=LET(a;CODIGO(EXTRAE(A3;SECUENCIA(LARGO(A3));1));b;FRECUENCIA(a;a);b)
Creamos otra variable, y, extraemos el valor máximo de la variable “b”.
=LET(a;CODIGO(EXTRAE(A3;SECUENCIA(LARGO(A3));1));b;FRECUENCIA(a;a);c;MAX(b);c)
Obtenemos el valor de 2, que son las veces que aparece la letra “a”.
Creamos otra variable, usamos la función UNIRCADENAS, como argumento delimitador, entre comillas dobles ponemos coma, y, dejamos un espacio, ignoramos celdas vacías, como argumento texto1, usamos el condicional SI, como argumento prueba lógica preguntamos si la variable “b” es igual a la variable “c”, como argumento valor si verdadero, usamos la función CARÁCTER, como argumento ponemos la variable “a”, como argumento valor si falso, ponemos blanco.
=LET(a;CODIGO(EXTRAE(A3;SECUENCIA(LARGO(A3));1));b;FRECUENCIA(a;a);c;MAX(b);d;UNIRCADENAS(", ";VERDADERO;SI(b=c;CARACTER(a);""));d)
En este caso, como solo tenemos un carácter que aparece mas de una vez, solo aparece la letra “a”.
Usamos el argumento calculo de LET, usamos la función APILARH, como argumento matriz1 ponemos la variable “d”, como argumento matriz2 ponemos la variable “c”.
Vamos a obtener la letra que mas se repite junto con el número de repeticiones.
Después del signo igual usamos la función REDUCE, como argumento valor inicial ponemos blanco, como argumento array, seleccionamos el rango A3:A11, como argumento función, ponemos LAMBDA, y, declaramos dos variables.
=REDUCE("";A3:A11;LAMBDA(x;y
Como argumento calculo, usamos la función APIALRV, como argumento matriz1, ponemos la variable “x”, como argumento matriz2, es la función LET, pero, cambiamos A3 por la variable “y”.
=REDUCE("";A3:A11;LAMBDA(x;y;APILARV(x;LET(a;CODIGO(EXTRAE(y;SECUENCIA(LARGO(y));1));b;FRECUENCIA(a;a);c;MAX(b);d;UNIRCADENAS(", ";VERDADERO;SI(b=c;CARACTER(a);""));APILARH(d;c)))))
Tenemos la o las letras que aparecen mas de una vez junto con el numero de repeticiones para cada cadena.
La primera fila está de más, por lo que usamos la función EXCLUIR, como argumento matriz es la función REDUCE, como argumento filas, ponemos 1.
=EXCLUIR(REDUCE("";A3:A11;LAMBDA(x;y;APILARV(x;LET(a;CODIGO(EXTRAE(y;SECUENCIA(LARGO(y));1));b;FRECUENCIA(a;a);c;MAX(b);d;UNIRCADENAS(", ";VERDADERO;SI(b=c;CARACTER(a);""));APILARH(d;c)))));1)
Y ya lo tenemos.
Miguel Angel Franco Garcia
Comments