jueves, 7 de julio de 2022

LAMBDA: Lista de distintos

Hoy veremos una de esas fórmulas que resultan útiles y que por su simpleza te sorprenderá. Construiremos una fórmula que nos liste elementos distintos entre dos listas...

El caso es que recientemente tuve la necesidad de obtener una lista de elementos previamente no empleados, y aunque en ese momento la generé 'manualmente', me quedé pensando en la fórmula que automatizara tal cosa...
Y aquí está el resultado.

Partimos de una 'Lista_A' principal con todos los elementos posibles... y una 'Lista_B' con los elementos ya utilizados. El objetivo es obtener una lista de aquellos de la primera no usados aún, i.e., una lista de distintos.
Obtener Lista de distintos


Nuestra fórmula en F2 sería:

=UNICOS(FILTRAR(Lista_A;
        LET(num;CONTARA(List_B);
            nFil;CONTARA(Lista_A);
            arrDist;--(Lista_<>TRANSPONER(List_B));
        MMULT(arrDist;SECUENCIA(num;1;1;0))>(num-1))))

Donde generamos una matriz de 1/VERDADEROS y 0/FALSOS para cada elemento de la 'Lista_A', que nos indicará si se existe en la 'Lista_B' o no.
Obtener Lista de distintos

Para llegar a ese vector de V-F he optado por un clásico método empleando la función MMULT que multiplica matrices...
Finalmente la función FILTRAR se encarga de listar dichos elementos... Todo dentro de la función UNICOS para eliminar posibles repeticiones.

Pero si te gustan las nuevas funciones LAMBDA entonces esta segunda opción es la tuya:

   =FILTRAR(Lista_A;
            BYROW(Lista_A;LAMBDA(rw;CONTAR.SI(List_B;rw)=0)))

Obtener Lista de distintos

La función BYROW se encarga esta vez de evaluar las coincidencias o no entre las listas, y obtener el vector de Vy F necesarios para FILTRAR.
Más simple es imposible ;-)

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.