J'ai deux listes (ensembles uniques) dans un tableur et je veux obtenir l'intersection des deux.
Y a-t-il un moyen facile de faire ceci?
Voici un exemple de ce que je veux réaliser:
Liste 1 Liste 2 Résultat attendu A 1 e B 2 f Ce D 4 ef f 6
Il n'est pas nécessaire de passer à GAZ, les fonctions de tableur standard gèrent cela facilement.
Veuillez coller ce qui suit dans une cellule de votre exemple
=iferror(filter($A$2:$A, match($A$2:$A, B2:$B , false)), "no match")
La fonction match génère un produit cartésien des deux plages remplies d'erreurs, sauf lorsqu'une correspondance est trouvée. Il renvoie un index dans la 2ème plage lorsqu'une correspondance est trouvée .
La fonction de filtre rejette toute la merde et ne renvoie que les valeurs correctement indexées.
L'erreur aide à obtenir un résultat ordonné s'il n'y a aucune correspondance.
Les plages peuvent être de n'importe quelle longueur, comme indiqué par l'idiome $ A $ 2: $ A.
Ce petit script comparera deux plages, sous forme de formule:
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;
}
Dans votre feuille, vous pouvez ajouter à la cellule D2 la formule suivante:
=COMPARE(A2:A7,B2:B7)
Ajoutez le script via le menu Outils, l'éditeur de script.
Si vous cherchez comment trouver une soustraction de deux plages (éléments de la plage 1 qui ne sont pas dans la plage 2), comme:
List 1 List 2 Expected result
a 1 a
b 2 b
c e c
d 4 d
e f
f 6
Voici une formule pour vous:
=iferror(filter($A$2:$A, iserror(match($A$2:$A, B2:$B , false))), "no match")