web-dev-qa-db-fra.com

Comment obtenir l'intersection de deux ensembles

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 

Exemple de fiche Google

12
NoamNelke

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.

16
Martin Bramwell

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.

3
Jacob Jan Tuinstra

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")
2
Zhenya Morozov