Excel UNIQUE sur plusieurs colonnes

Excel UNIQUE sur plusieurs colonnes

Nouvelle réponse :

Les nouvelles fonctions de mise en forme de tableaux de Ms365 seront utiles :

=UNIQUE(TOCOL(A2:C7,3,1))

TOCOL() retournerait un vecteur de toutes les valeurs autres que les valeurs d’erreur ou vides (3) par colonne (1).

Ancienne réponse :

En utilisant Microsoft365 avec accès à LET(), vous pourriez utiliser :

Formule dans E2 :

=LET(X,A2:C7,Y,SEQUENCE(ROWS(X)*COLUMNS(X)),Z,INDEX(IF(X="","",X),1+MOD(Y,ROWS(X)),ROUNDUP(Y/ROWS(X),0)),SORT(UNIQUE(FILTER(Z,Z<>""))))

De cette façon, la formule devient facilement réutilisable puisque le seul paramètre à modifier est la référence à « X ».

Pour information, cela pourrait aussi être fait via PowerQuery alias Get&Transform, disponible depuis Excel 2013 ou en tant que complément gratuit pour Excel 2010.

  • Sélectionnez vos données (y compris les en-têtes). Allez dans Ruban > Données > « À partir d’un tableau/d’une plage ».

  • Confirmez que vos données ont des en-têtes et PowerQuery devrait s’ouvrir.

  • Dans PowerQuery, sélectionnez toutes les colonnes. Allez dans Transformer > « Transposer ».

  • Sélectionnez à nouveau toutes les colonnes. Allez dans Transformer > « Supprimer le croisement dynamique des colonnes ».

Cela prendra en charge les valeurs vides également. Maintenant :

  • Sélectionnez la colonne d’attributs et supprimez-la.

  • Triez la colonne restante et supprimez les doublons (clic droit sur l’en-tête > « Supprimer les doublons »).

  • Fermez PowerQuery et enregistrez les modifications.

Tableau résultant :

M-Code:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"A Values", Int64.Type}, {"B Values", Int64.Type}, {"C Values", Int64.Type}}),
    #"Transposed Table" = Table.Transpose(#"Changed Type"),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Transposed Table", {}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}),
    #"Sorted Rows" = Table.Sort(#"Removed Columns",{{"Value", Order.Ascending}}),
    #"Removed Duplicates" = Table.Distinct(#"Sor

*(Réponse tronquée)*