Tengo dos listas (conjuntos únicos) en una hoja de cálculo y quiero obtener la intersección de las dos.
¿Hay una forma fácil de hacer esto?
Aquí hay un ejemplo de lo que quiero lograr:
Lista 1 Lista 2 Resultado esperado a 1 e b 2 f ce d 4 ef f 6
Tengo dos listas (conjuntos únicos) en una hoja de cálculo y quiero obtener la intersección de las dos.
¿Hay una forma fácil de hacer esto?
Aquí hay un ejemplo de lo que quiero lograr:
Lista 1 Lista 2 Resultado esperado a 1 e b 2 f ce d 4 ef f 6
Respuestas:
No hay necesidad de saltar a GAS, las funciones estándar de hoja de cálculo manejan esto fácilmente.
Pegue lo siguiente en una celda en su ejemplo
=iferror(filter($A$2:$A, match($A$2:$A, B2:$B , false)), "no match")
La función de coincidencia genera un producto cartesiano de los dos rangos lleno de errores, excepto donde se encuentra una coincidencia. Devuelve un índice en el segundo rango cuando un partido se encuentra.
La función de filtro descarta toda la basura y solo devuelve los valores indexados correctamente.
El iferror ayuda a obtener un resultado ordenado si no hay coincidencias en absoluto.
Los rangos pueden ser de cualquier longitud, como lo indica el modismo $ A $ 2: $ A.
Este pequeño script comparará dos rangos, como una fórmula:
function COMPARE(array1, array2) {
var array = [];
for(i=0; i<array1.length; i++) {
for(j=0; j<array2.length; j++) {
if(array1[i][0] == array2[j][0]) {
// the extra square brackets will make it a 2D array,
// aligning it vertically
array.push([array1[i][0]]);
}
}
}
return array;
}
En su hoja puede agregar en la celda D2 la siguiente fórmula:
=COMPARE(A2:A7,B2:B7)
Agregue el script a través del menú de herramientas, editor de script.
En caso de que esté buscando cómo encontrar una resta de dos rangos (elementos del rango 1 que no están en el rango 2), como:
List 1 List 2 Expected result
a 1 a
b 2 b
c e c
d 4 d
e f
f 6
Aquí hay una fórmula para ti:
=iferror(filter($A$2:$A, iserror(match($A$2:$A, B2:$B , false))), "no match")
Este pequeño script comparará dos rangos, como una fórmula:
function intersect(array1, array2) {
var array = [];
for(i=0; i<array1.length; i++) {
for(j=0; j<array2.length; j++) {
if(array1[i][0] == array2[j][0]) {
// the extra square brackets will make it a 2D array,
// aligning it vertically
array.push([array1[i][0]]);
}
}
}
return array;
}
Extra:
function extersect(array1, array2) {
var array = [];
var tmp = true;
for(i=0; i<array1.length; i++) {
for(j=0; j<array2.length; j++) {
if(array1[i][0] == array2[j][0]) {
// the extra square brackets will make it a 2D array,
// aligning it vertically
tmp = false;
}
}
if(tmp == true)
{
array.push([array1[i][0]]);
}
tmp = true;
}
return array;
}
En su hoja puede agregar en la celda D2 la siguiente fórmula:
=intersect(A2:A7,B2:B7)
Agregue el script a través del menú de herramientas, editor de script.
= intersectar (A2: A7, B2: B7) devuelve resultados que se presentan en ambas matrices array1, array2.
= extersect (A2: A7, B2: B7) devuelve valores de array1 que no existe en el rango B2: B7