Comment mettre en surbrillance la cellule si la valeur est en double dans la même colonne pour la feuille de calcul Google?


271

Je recherche une formule pour la cellule de surbrillance de la feuille de calcul Google si la valeur est en double dans la même colonne

quelqu'un peut-il m'aider pour cette requête?

Réponses:


474

Essaye ça:

  1. Sélectionnez toute la colonne
  2. Cliquez sur Format
  3. Cliquez sur Mise en forme conditionnelle
  4. Cliquez sur Ajouter une autre règle (ou modifiez celle existante / par défaut)
  5. Définissez Format des cellules si :Custom formula is
  6. Définissez la valeur sur: =countif(A:A,A1)>1(ou passez Aà la colonne choisie)
  7. Définissez le style de formatage.
  8. Assurez-vous que la plage s'applique à votre colonne (par exemple, A1:A100).
  9. Cliquez sur Terminé

Tout ce qui est écrit dans les cellules A1: A100 sera vérifié et s'il y a un doublon (se produit plus d'une fois), il sera coloré.

Pour les paramètres régionaux utilisant virgule ( ,) comme séparateur décimal, le séparateur d'argument est probablement un point-virgule ( ;). Autrement dit, essayez =countif(A:A;A1)>1plutôt:.

Pour plusieurs colonnes, utilisez countifs.


50
À partir des nouvelles feuilles Google, vous pouvez utiliser la version multi-colonnes COUNTIFS. Utilisez comme ceci si les doublons sont une combinaison de plusieurs colonnes=COUNTIFS(A:A; A1; B:B; B1)>1
Christiaan Westerbeek

6
la fin se ;traduit par une erreur de "formule non valide" pour moi. Le retirer a fait l'affaire. Faites également attention: la cellule que vous spécifiez comme 2e argument de la countifdoit être la première cellule de la plage que vous sélectionnez.
edelans

11
Ça marche. Mais pourquoi? En supposant que A1 est un critère pour l'équation, cette formule ne compare-t-elle pas toutes les cellules de la plage à A1?
mafonya

9
@mafonya, la formule personnalisée est une formule générique qui doit être lue comme s'appliquant à la première cellule. Toutes les références seront adaptées pour chaque cellule de la gamme sélectionnée. Ainsi, par exemple, lors de la vérification de la cellule B2, la formule deviendra interne =countif(B:B,B2)>1. Cela permet de faire un formatage assez avancé lors de l'utilisation de références de cellule absolues et relatives.
asoundmove

14
En remarque, si vous souhaitez l'appliquer à toute la colonne, vous pouvez utiliser la formule = countif (A: A, A: A)> 1 Cela signifie qu'il ne s'appliquera pas seulement à la cellule A1, mais A4 et A8 s'ils sont identiques (duplicata). Maintenant, A4 et A8 seront formatés.
BBking

68

Bien que la réponse de zolley soit parfaitement adaptée à la question, voici une solution plus générale pour n'importe quelle gamme, plus une explication:

    =COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1

Veuillez noter que dans cet exemple, j'utiliserai la plage A1:C50. Le premier paramètre ( $A$1:$C$50) doit être remplacé par la plage sur laquelle vous souhaitez mettre en évidence les doublons!


pour mettre en évidence les doublons:

  1. Sélectionnez toute la plage sur laquelle le marquage en double est souhaité.
  2. Au menu: Format>Conditional formatting...
  3. Sous Apply to range, sélectionnez la plage à laquelle la règle doit être appliquée.
  4. Dans Format cells if, sélectionnez Custom formula isdans la liste déroulante.
  5. Dans la zone de texte, insérez la formule donnée, en ajustant la plage pour qu'elle corresponde à l'étape (3).

Pourquoi ça marche?

COUNTIF(range, criterion), comparera chaque cellule rangede la criterion, qui est traitée de la même manière que les formules. Si aucun opérateur spécial n'est fourni, il comparera chaque cellule de la plage avec la cellule donnée et renverra le nombre de cellules correspondant à la règle (dans ce cas, la comparaison). Nous utilisons une plage fixe (avec des $signes) afin de toujours voir la gamme complète.

Le deuxième bloc INDIRECT(ADDRESS(ROW(), COLUMN(), 4)),, renverra le contenu de la cellule actuelle. Si cela a été placé à l'intérieur de la cellule, les documents auront pleuré sur la dépendance circulaire, mais dans ce cas, la formule est évaluée comme si elle se trouvait dans la cellule, sans la modifier.

ROW()et COLUMN()renverra respectivement le numéro de ligne et le numéro de colonne de la cellule donnée. Si aucun paramètre n'est fourni, la cellule actuelle sera renvoyée (celle-ci est basée sur 1, par exemple, B3renverra 3 pour ROW()et 2 pour COLUMN()).

Ensuite, nous utilisons: ADDRESS(row, column, [absolute_relative_mode])pour traduire la ligne et la colonne numériques en une référence de cellule (comme B3. N'oubliez pas, alors que nous sommes à l'intérieur du contexte de la cellule, nous ne savons pas que c'est le contenu de l'adresse OU, et nous avons besoin du contenu pour pouvoir le comparer). Le troisième paramètre prend soin de la mise en forme et 4renvoie les préférences de mise en forme INDIRECT().

INDIRECT(), prendra une référence de cellule et retournera son contenu. Dans ce cas, le contenu de la cellule actuelle. Revenons ensuite au début, COUNTIF()testera chaque cellule de la plage par rapport à la nôtre et renverra le compte.

La dernière étape fait notre formule renvoie une valeur booléenne, en faisant une expression logique: COUNTIF(...) > 1. Le > 1est utilisé parce que nous savons qu'il existe au moins une cellule identique à la nôtre. C'est notre cellule, qui est dans la gamme, et sera donc comparée à elle-même. Donc, pour indiquer un doublon, nous devons trouver 2 ou plusieurs cellules correspondant aux nôtres.


Sources:


4
Malheureusement, cela ne fonctionne pas pour moi. Il ne parvient pas à mettre en évidence quoi que ce soit en dépit de nombreux doublons. Je ne sais pas pourquoi, cela semble être une bonne solution.
JVC

Cela fonctionne pour moi, mais met également en évidence les cellules vides. Existe-t-il un moyen d'exclure les blancs?
gillespieza

1
@Amanda - Oui, un peu de créativité et c'est possible. Je suis AFK pour la semaine, mais attrapez-moi dans une semaine et demie et je serai heureux de vous aider. L'idée est de créer une instruction AND (en utilisant *) et une autre vérification, donc dans le sens de ((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...))))). C'est le mieux que je puisse faire sur mobile. :)
Égoïste

2
C'est exactement la solution requise. Cela fonctionne comme un HASHMAP pour identifier les doublons.
AKh

1
Fonctionne charmant, merci @Selfish! Cela m'a fait gagner du temps. Remarque: seule la chose à changer doit être $A$1:$C$50- conformément aux colonnes en question. J'aime cette approche plus générique que celle de Zolley.
boldnik

28

La réponse de @zolley est correcte. Il suffit d'ajouter un Gif et des étapes pour la référence.

  1. Aller au menu Format > Conditional formatting..
  2. Trouver Format cells if..
  3. Ajouter =countif(A:A,A1)>1dans le champCustom formula is
    • Remarque: modifiez la lettre Aavec votre propre colonne.

entrez la description de l'image ici


2
Comment puis-je les filtrer par couleur après avoir mis en évidence les doublons?
Faisal

@Faisal uniquement avec script ou
module

27

Dans le menu déroulant "Le texte contient", sélectionnez "La formule personnalisée est:" et écrivez: "= countif (A: A, A1)> 1" (sans les guillemets)

J'ai fait exactement comme proposé zolley , mais il devrait y avoir une petite correction: utilisez "La formule personnalisée est" au lieu de "Le texte contient" . Et puis le rendu conditionnel fonctionnera.

Capture d'écran du menu


1
Je ne vous ai pas déçu (je viens de trouver cette question aujourd'hui), mais voici un commentaire sur votre réponse, comme vous l'avez demandé. Je ne pense pas que le point-virgule soit nécessaire dans la formule. De plus, je vois toujours une liste déroulante dans le panneau de mise en forme conditionnelle dans les feuilles de Google. Au moins, je clique sur l'option de sélection, et un long ensemble d'options apparaît, que j'appellerais généralement un menu déroulant. L'option qui apparaît initialement dans la liste déroulante est fréquemment Text Contains, c'est donc ce sur quoi un utilisateur clique généralement pour accéder au menu déroulant.
Paul de Barros

Merci Paul pour ton commentaire. J'ai peut-être mal compris: j'ai compris que "Le texte contient" (ou "Formater les cellules si ...") a un menu déroulant enfant "La formule personnalisée est:". De plus, "Text Contains" doit avoir une valeur de sous-chaîne correspondante, et non "= countif (A: A, A1)> 1;". En fait, c'est une autre approche.
Shurik

12

Mettez en surbrillance les doublons (dans la colonne C):

=COUNTIF(C:C, C1) > 1

Explication: L' C1ici ne fait pas référence à la première ligne de C. Étant donné que cette formule est évaluée par une règle de format conditionnel, lorsque la formule est vérifiée pour voir si elle s'applique, la C1référence effective à la ligne en cours d'évaluation voir si la surbrillance doit être appliquée. ( Donc c'est plus comme INDIRECT(C &ROW())si ça vous dit quelque chose! ). Essentiellement, lors de l'évaluation d'une formule de format conditionnel, tout ce qui fait référence à la ligne 1 est évalué par rapport à la ligne sur laquelle la formule est exécutée. ( Et oui, si vous utilisez C2, vous demandez à la règle de vérifier le statut de la ligne immédiatement en dessous de celle en cours d'évaluation. )

Donc, cela dit, comptez les occurrences de tout ce qui se trouve dans C1(la cellule en cours d'évaluation) qui se trouve dans l'ensemble de la colonne Cet s'il y en a plus de 1 (c'est-à-dire que la valeur a des doublons) alors: appliquez la surbrillance ( car la formule , dans l'ensemble, évalueTRUE ).

Mettez en surbrillance le premier double uniquement:

=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1)

Explication: Cela ne se met en surbrillance que si les deux COUNTIFs le sont TRUE(ils apparaissent à l'intérieur d'un AND()).

Le premier terme à évaluer (le COUNTIF(C:C, C1) > 1) est exactement le même que dans le premier exemple; c'est TRUEseulement si ce qui est dedans C1a un doublon. ( N'oubliez pas que C1fait effectivement référence à la ligne en cours de vérification pour voir si elle doit être mise en surbrillance ).

Le deuxième terme ( COUNTIF(C$1:C1, C1) = 1) semble similaire, mais il présente trois différences cruciales:

Il ne recherche pas la totalité de la colonne C(comme la première:) C:Cmais à la place, il démarre la recherche à partir de la première ligne: C$1 (le $force à regarder littéralement la ligne 1, pas la ligne à évaluer).

Et puis il arrête la recherche sur la ligne en cours d'évaluation C1.

Enfin, il dit = 1.

Ainsi, ce ne sera que TRUEs'il n'y a pas de doublons au-dessus de la ligne en cours d'évaluation (ce qui signifie que ce doit être le premier des doublons).

Combiné avec ce premier terme (qui ne le sera que TRUEsi cette ligne contient des doublons), cela signifie que seule la première occurrence sera mise en évidence.

Mettez en surbrillance le deuxième et les doublons suivants:

=AND(COUNTIF(C:C, C1) > 1, NOT(COUNTIF(C$1:C1, C1) = 1), COUNTIF(C1:C, C1) >= 1)

Explication: La première expression est la même que toujours ( TRUEsi la ligne actuellement évaluée est en double).

Le deuxième terme est exactement le même que le dernier, sauf qu'il est nié: il a un NOT()autour. Il ignore donc la première occurrence.

Enfin, le troisième terme récupère les doublons 2, 3, etc. COUNTIF(C1:C, C1) >= 1démarre la plage de recherche sur la ligne actuellement évaluée (le C1dans le C1:C). Ensuite, il n'évalue TRUE(applique la surbrillance) que s'il y a un ou plusieurs doublons en dessous de celui-ci (et y compris celui-ci): >= 1(ce ne doit >=pas être juste >sinon le dernier doublon est ignoré).


3

J'ai essayé toutes les options et aucune n'a fonctionné.

Seuls les scripts de l'application Google m'ont aidé.

source: https://ctrlq.org/code/19649-find-duplicate-rows-in-google-sheets

En haut de votre document

1.- allez dans outils> éditeur de script

2.- définissez le nom de votre script

3.- collez ce code:

function findDuplicates() {
  // List the columns you want to check by number (A = 1)
  var CHECK_COLUMNS = [1];

  // Get the active sheet and info about it
  var sourceSheet = SpreadsheetApp.getActiveSheet();
  var numRows = sourceSheet.getLastRow();
  var numCols = sourceSheet.getLastColumn();

  // Create the temporary working sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var newSheet = ss.insertSheet("FindDupes");

  // Copy the desired rows to the FindDupes sheet
  for (var i = 0; i < CHECK_COLUMNS.length; i++) {
    var sourceRange = sourceSheet.getRange(1,CHECK_COLUMNS[i],numRows);
    var nextCol = newSheet.getLastColumn() + 1;
    sourceRange.copyTo(newSheet.getRange(1,nextCol,numRows));
  }

  // Find duplicates in the FindDupes sheet and color them in the main sheet
  var dupes = false;
  var data = newSheet.getDataRange().getValues();
  for (i = 1; i < data.length - 1; i++) {
    for (j = i+1; j < data.length; j++) {
      if  (data[i].join() == data[j].join()) {
        dupes = true;
        sourceSheet.getRange(i+1,1,1,numCols).setBackground("red");
        sourceSheet.getRange(j+1,1,1,numCols).setBackground("red");
      }
    }
  }

  // Remove the FindDupes temporary sheet
  ss.deleteSheet(newSheet);

  // Alert the user with the results
  if (dupes) {
    Browser.msgBox("Possible duplicate(s) found and colored red.");
  } else {
    Browser.msgBox("No duplicates found.");
  }
};

4.- enregistrer et exécuter

En moins de 3 secondes, ma ligne en double a été colorée. Copiez simplement le script.

Si vous ne connaissez pas les scripts Google Apps, ces liens pourraient vous aider:

https://zapier.com/learn/google-sheets/google-apps-script-tutorial/

https://developers.google.com/apps-script/overview

J'espère que ça aide.


Ce code peut-il être modifié pour ne mettre en évidence que les champs en double dans la colonne avec du rouge au lieu de la ligne complète?
Amr
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.