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)*