Fórmula de Excel: extraer valores comunes de dos listas -

Fórmula genérica

=FILTER(list1,COUNTIF(list2,list1))

Resumen

Para comparar dos listas y extraer valores comunes, puede usar una fórmula basada en las funciones FILTER y COUNTIF. En el ejemplo que se muestra, la fórmula en F5 es:

=FILTER(list1,COUNTIF(list2,list1))

donde list1 (B5: B15) y list2 (D5: D13) son rangos con nombre. El resultado, valores que aparecen en ambas listas, se derrama en el rango F5: F11.

Explicación

La función FILTRO acepta una matriz de valores y un argumento "incluir" que filtra la matriz basándose en una expresión lógica o valor.

En este caso, la matriz se proporciona como el rango con nombre "lista1", que contiene todos los valores en B5: B15. El argumento de inclusión lo entrega la función CONTAR.SI, que está anidada dentro de FILTRO:

=FILTER(list1,COUNTIF(list2,list1))

CONTAR.SI se configura con lista2 como rango y lista1 como criterio . Debido a que damos a COUNTIF once valores de criterios, COUNTIF devuelve once resultados en una matriz como esta:

(1;1;0;1;0;1;0;1;0;1;1)

Observe que los 1 corresponden a los elementos de list2 que aparecen en list1.

Esta matriz se envía directamente a la función FILTRO como el argumento "incluir":

=FILTER(list1,(1;1;0;1;0;1;0;1;0;1;1))

La función FILTRO filtra la lista 1 utilizando los valores proporcionados por CONTAR.SI. Se eliminan los valores asociados con cero; otros valores se conservan.

El resultado final es una matriz de valores que existe en ambas listas, que se derrama en el rango F5: F11.

Lógica extendida

En la fórmula anterior, usamos los resultados sin procesar de COUNTIF como filtro. Esto funciona porque Excel evalúa cualquier valor distinto de cero como VERDADERO y cero como FALSO. Si CONTAR.SI devuelve un recuento mayor que 1, el filtro seguirá funcionando correctamente.

Para forzar resultados VERDADEROS y FALSOS explícitamente, puede usar "> 0" así:

=FILTER(list1,COUNTIF(list2,list1)>0)

Eliminar duplicados u ordenar

Para eliminar duplicados, simplemente anide la fórmula dentro de la función ÚNICA:

=UNIQUE(FILTER(list1,COUNTIF(list2,list1)))

Para ordenar los resultados, anide en la función CLASIFICAR:

=SORT(UNIQUE(FILTER(list1,COUNTIF(list2,list1))))

Lista de valores que faltan en list2

Para generar valores en list1 que faltan en list2, puede invertir la lógica de esta manera:

=FILTER(list1,COUNTIF(list2,list1)=0)

Articulos interesantes...