Recuento de frutas
- Jaime Franco Jimenez

- 16 ene 2024
- 3 Min. de lectura
Tenemos una columna con frutas, en cada celda, puede haber mas de una fruta separadas por comas.
Debemos de crear un cuadro donde en vertical aparezcan las frutas únicas, igual que en horizontal, y, en la parte inferior del cuadro, debe de aparecer las veces que aparece cada fruta.
El cuadro debe de quedar como sigue:
En la celda C1, usamos LET, creamos una variable, seleccionamos el rango A2:A12.
=LET(a;A2:A12
Creamos otra variable, usamos la funcion CONCAT, como argumento texto1, ponemos la variable “a”, y, concatenamos con la barra inclinada (/).
=LET(a;A2:A12;b;CONCAT(a&"/");b)
Tenemos todas las frutas en una sola fila separada cada grupo de celdas por la barra inclinada.
Creamos otra variable, usamos la funcion DIVIDIRTEXTO, como argumento texto, ponemos la variable “b”, como argumento delimitador de columna, entre comillas dobles, ponemos la barra inclinada, como argumento delimitador de fila, entre comillas dobles, ponemos coma.
=LET(a;A2:A12;b;CONCAT(a&"/");c;DIVIDIRTEXTO(b;"/";",");c)
Tenemos una matriz desbordada de tres columnas, donde tenemos cada fruta, y, donde no hay frutas que mostrar, tenemos error.
Usamos la funcion ENCOL, como argumento matriz, es la funcion DIVIDIRTEXTO, como argumento ignorar, seleccionamos 3.
=LET(a;A2:A12;b;CONCAT(a&"/");c;ENCOL(DIVIDIRTEXTO(b;"/";",");3);c)
Tenemos todas las frutas en una columna.
Tenemos espacios de más, por lo que usamos la funcion ESPACIOS antes de la funcion UNICOS.
=LET(a;A2:A12;b;CONCAT(a&"/");c;ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3));c)
Nos quedamos con los valores únicos.
=LET(a;A2:A12;b;CONCAT(a&"/");c;UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3)));c)
Ordenamos.
=LET(a;A2:A12;b;CONCAT(a&"/");c;ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));c)
Usamos la funcion EXCLUIR para quitar la primera celda que esta en blanco, como argumento matriz es la funcion ORDENAR, como argumento filas, ponemos 1.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);c)
Creamos otra variable, y, ponemos la palabra Frutas entre comillas dobles.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";d)
Creamos otra variable, usamos la funcion UNIRCADENAS, como argumento delimitador, ponemos un espacio, ignoramos celdas vacías, o, ignoramos el argumento, como argumento texto1, ponemos la variable “d”, como argumento texto2, usamos la funcion ENFILA, y, como argumento ponemos la variable “c”.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";e;UNIRCADENAS(" ";VERDADERO;d;ENFILA(c ));e)
Tenemos en una fila, la palabra Frutas y las frutas separadas por un espacio.
Usamos la funcion DIVIDIRTEXTO, como argumento texto, es la funcion UNIRCADENAS, como argumento delimitador de columna, ponemos un espacio.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";e;DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;d;ENFILA(c ));" ");e)
Tenemos separada cada palabra.
Creamos otra variable donde nos traemos la siguiente parte de la variable “c”.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";e;SI.ERROR(APILARV(DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;d;ENFILA(c ));" ");c);"");f;ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3));f)
Tenemos todas las frutas en una sola columna, creamos otra variable, usamos la funcion REDUCE, como valor inicial, ponemos blanco, como array, ponemos la variable “c”, como argumento funcion, ponemos LAMBDA, y, declaramos dos variables.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";e;SI.ERROR(APILARV(DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;d;ENFILA(c ));" ");c);"");f;ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3));g;REDUCE("";c;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 numero1, usamos el condicional SI, donde preguntamos que, si la variable “f” es igual a la variable “y”, que ponga 1, en caso contrario, que ponga 0.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";e;SI.ERROR(APILARV(DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;d;ENFILA(c ));" ");c);"");f;ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3));g;REDUCE("";c;LAMBDA(x;y;APILARH(x;SUMA(SI(f=y;1;0)))));f)
Ya tenemos las veces que aparece cada fruta.
Usamos la funcion EXCLUIR, y, quitamos la primera columna.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";e;SI.ERROR(APILARV(DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;d;ENFILA(c ));" ");c);"");f;ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3));g;EXCLUIR(REDUCE("";c;LAMBDA(x;y;APILARH(x;SUMA(SI(f=y;1;0)))));;1);g)
Creamos otra variable, preguntamos que, si la variable “c” es igual a la variable “c” pero en fila, por lo que usamos la funcion ENFILA, que devuelva la variable “g”, en caso contrario, que devuelva blanco.
Vamos a conseguir colocar el recuento de cada fruta en su posición.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";e;SI.ERROR(APILARV(DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;d;ENFILA(c ));" ");c);"");f;ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3));g;EXCLUIR(REDUCE("";c;LAMBDA(x;y;APILARH(x;SUMA(SI(f=y;1;0)))));;1);h;SI(c=ENFILA(c );g;"");h)
Usamos el argumento cálculo de LET, usamos la funcion APILARH, como argumento matriz1, ponemos la variable “c”, como argumento matriz2, ponemos la variable “h”.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";e;DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;d;ENFILA(c ));" ");f;ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3));g;EXCLUIR(REDUCE("";c;LAMBDA(x;y;APILARH(x;SUMA(SI(f=y;1;0)))));;1);h;SI(c=ENFILA(c );g;"");APILARH(c;h))
Tenemos el cuadro realizado a falta de la fila superior.
Usamos la funcion APILARV, como argumento matriz1, ponemos la variable “e”, como argumento matriz2, es la funcion APILARH.
=LET(a;A2:A12;b;CONCAT(a&"/");c;EXCLUIR(ORDENAR(UNICOS(ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3))));1);d;"Frutas";e;DIVIDIRTEXTO(UNIRCADENAS(" ";VERDADERO;d;ENFILA(c ));" ");f;ESPACIOS(ENCOL(DIVIDIRTEXTO(b;"/";",");3));g;EXCLUIR(REDUCE("";c;LAMBDA(x;y;APILARH(x;SUMA(SI(f=y;1;0)))));;1);h;SI(c=ENFILA(c );g;"");APILARV(e;APILARH(c;h)))
Aceptamos, y, ya lo tenemos.
Seleccionamos los valores numéricos, desplegamos formato condicional, y, seleccionamos nueva regla.
Ponemos lo siguiente en la ventana dar formato a los valores, y, damos un formato.
Aceptamos, y, le hemos resaltado los valores numéricos.
Miguel Angel Franco






















Comentarios