Comment trouver des doublons dans une colonne à l'aide de formules?

11

Quelqu'un a-t-il trouvé une formule pour trouver des doublons dans une colonne? Par exemple:

a
b
c
d
b
d

=somefunction(A1:A6)

Production:

b
d

Je sais qu'il y a une =unique()fonction, c'est essentiellement une =not_unique()fonction. Je me demandais s'il pouvait être construit sans utiliser de code.

Jason
la source
Voici un exemple dans ce thread stackoverflow.com/questions/19843406/… jetez un œil à cela qui pourrait vous donner une idée.
Vembu
Attendez, ce que vous cherchez est une not_uniquefonction, non? Vous semblez rechercher les champs qui ne sont pas uniques (les doublons), pas les champs qui sont uniques.
David Mulder

Réponses:

16

La solution possible sans colonne supplémentaire est:

=FILTER(UNIQUE(A2:A7), ARRAYFORMULA( COUNTIF(A2:A7,UNIQUE(A2:A7))>1 ))

Veuillez voir l'exemple préparé ici: Rechercher des doublons

Ilya Lapitan
la source
3

La seule façon que j'ai trouvée (en utilisant des formules) est d'introduire une nouvelle countcolonne.

Si vos valeurs sont répertoriées dans la colonne A, en commençant sur la ligne 2, entrez la formule =COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))dans B2et faites-la glisser vers le bas pour la copier. Cela donne:

| A: VALUE  | B: COUNT |
|-----------|----------|
|     a     |     1    |
|     b     |     2    |
|     c     |     1    |
|     d     |     2    |
|     b     |     2    |
|     d     |     2    |

Maintenant que nous avons un nombre d'occurrences de chaque valeur, nous pouvons filtrer la Acolonne par valeurs à partir de B. Dans la cellule C2, insérez la formule =UNIQUE(FILTER(A2:A7, B2:B7 > 1)). Cela donne:

| A: VALUE  | B: COUNT | C: DUPS |
|-----------|----------|---------|
|     a     |     1    |    b    |
|     b     |     2    |    d    |
|     c     |     1    |         |
|     d     |     2    |         |
|     b     |     2    |         |
|     d     |     2    |         |

Explication des formules

=COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))

  • La filterclause inspecte la Acolonne et recherche les cellules qui ont la même valeur que la cellule A2( A2est remplacée par la cellule correspondante lors de la copie de la formule).
  • counta compte les valeurs (y compris non numériques).

=UNIQUE(FILTER(A2:A7, B2:B7 > 1))

  • Cela filterexamine la colonne Bpour les valeurs qui sont > 1et renvoie les valeurs correspondantes de la colonne A. La uniquefonction s'assure simplement que nous ne retournons chaque valeur qu'une seule fois, donc nous n'obtenons pas bdeux fois, par exemple.

Cependant , une manière plus élégante serait d'utiliser une fonction de script:

function dups(rows) {
  var values = {};
  var duplicates = [];
  for (var i = 0; i < rows.length; i++) {
    var value = rows[i][0];
    if (values[value] !== undefined && duplicates.indexOf(value) == -1) {
      duplicates.push(value);
    } else {
      values[value] = true
    }
  }
  return duplicates;
}

Allez dans Outils → Éditeur de script , collez le code ci-dessus et enregistrez. Vous pouvez maintenant appeler la fonction en entrant la formule =dups(A2:A7)n'importe où. Cela renvoie les doublons trouvés dans A2:A7.


J'ai mis en place un exemple de feuille de calcul pour démontrer les deux possibilités , n'hésitez pas à le regarder et à le copier.

Vidar S. Ramdal
la source
var values ​​= {} doit être var values ​​= [] non?
Jacob Jan Tuinstra
1
En fait non. valuesest utilisé comme une carte de valeur-clé, pas un tableau, de sorte qu'il est facile de vérifier si nous avons déjà traité une valeur spécifique - soit values[property]existe, soit elle n'existe pas.
Vidar S. Ramdal
1
Je pensais que vous poussiez dans un tableau .... Je l' ai testé votre code et il continue d' afficher des entrées en double, comme dans d, d, d, d ... . La solution de formule que vous avez fournie ne fait pas cela.
Jacob Jan Tuinstra
1
Je voulais dire objet.
Jacob Jan Tuinstra
1
@JacobJanTuinstra Ah, oui - je le vois maintenant. Correction du code.
Vidar S. Ramdal