339 votes

Comment obtenir les valeurs distinctes/uniques d'une colonne dans Excel ?

Si j'ai une colonne contenant des valeurs et que je veux savoir quelles sont les valeurs distinctes qu'elle contient (pas combien, mais les valeurs distinctes réelles), comment puis-je le faire ?

Dans SQL Server, je ferais quelque chose comme

SELECT Distinct(MyColumn) FROM MyTable

0 votes

1 votes

Depuis l'automne 2018, il est désormais possible de le faire beaucoup plus facile en utilisant le UNIQUE() (du moins si vous utilisez Office 365). stackoverflow.com/a/63073902/12418842

357voto

PuppetMaster Points 11

C'est plus simple que vous ne le pensez :

  • Cliquez sur le bouton Données Menu Ruban
  • Sélectionnez le Avancé Bouton dans le Trier et filtrer section
  • Remplissez la boîte de dialogue, en copiant les résultats vers un autre emplacement et en vous assurant que vous cocher Enregistrements uniques uniquement

enter image description here

39 votes

Pour ceux d'entre nous qui vivent encore sans ruban, c'est Data->Filtre->Avancé.

11 votes

+1 Cette méthode est supérieure à celle de la suppression des doublons si vous souhaitez conserver les données d'origine intactes.

22 votes

Si vous copiez des données sur une autre feuille, vous devez lancer la boîte de dialogue Avancé de la feuille que vous voulez copier vers sinon vous obtenez un You can only copy filtered data to the active sheet erreur.

139voto

jkp Points 20410

Excel 2007 et 2010 :
Utilisez le Remove Duplicates sous l'option de menu Données en-tête.

Excel 2003 :
C'est facile :

  1. Assurez-vous que vos données ont un en-tête
  2. Données --> Filtre --> Filtre avancé
  3. Vérifiez uniquement les enregistrements uniques
  4. Sélectionnez Copier vers un autre emplacement
  5. Cliquez sur OK

La manière forte :

Écrivez une macro avec le code suivant :

'Remove duplicates from sorted list
Sub getDistinct()
    Do While ActiveCell.Value <> ""
        If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
            ActiveCell.Select
            Selection.Delete Shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Activate
        End If
    Loop
End Sub

Vous obtenez ainsi votre liste distincte. Vous pouvez d'abord copier votre liste sur une autre feuille.

25 votes

Merci ! Ceci est une preuve que Stack Exchange est bien meilleur que toute autre source d'informations techniques. Tous les autres résultats de Google sont inutiles et non classés. Je me demande aussi comment experts-exchange survit

27voto

studgeek Points 273

Ou (une manière simple et grossière) :

En B1,

=IF(COUNTIF(A$1:A1,A1)=1,A1,"") 

et copier vers le bas. Il ne fait que copier la première occurrence de chaque valeur d'un côté à l'autre (dans la ligne où elle se trouve).

2 votes

Comme pour toutes les formules Excel, vous devrez peut-être utiliser des points-virgules ( ; ) au lieu de virgules ( , ) en fonction des paramètres régionaux de votre système.

25voto

Andi Mohr Points 4100

J'utilise deux méthodes principales pour obtenir des valeurs distinctes - la première est l'inestimable Remove Duplicates outil comme suggéré par Nathan DeWitt .

L'inconvénient de Remove Duplicates c'est que vous perdez des données. Malgré la puissance de Ctrl + z vous pouvez ne pas vouloir le faire pour diverses raisons - par exemple, vous pouvez avoir des filtres actuellement sélectionnés qui rendent la suppression des doublons assez compliquée pour obtenir votre liste distincte de valeurs.

L'autre méthode, non mentionnée ci-dessus, consiste à utiliser un tableau croisé dynamique.

Disons qu'il s'agit de votre table et que vous voulez obtenir la liste distincte des plates-formes. dummy table

Insérer un Pivot Table avec la table comme source de données.

Sélectionnez maintenant le Plate-forme(s) comme votre Row Labels .

Voilà ! Une liste de valeurs distinctes.

pivot table as distinct value list

Si vous souhaitez mettre de l'ordre dans tout ça, vous pouvez éteindre Field Headers et mettre Grand Totals à être Off for Rows and Columns .

1 votes

La technique du tableau croisé dynamique est brillante ! Merci pour cela.

6voto

cjcottell Points 61

Ou vous pouvez inclure l'option de filtre dans une macro

    Columns("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=True

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X