2011-07-25 3 views
0

J'ai vu de nombreuses réponses à ces questions sur Internet (et sur stackoverflow) quelque chose ne fonctionne pas lorsque j'essaie la solution que tout le monde semble suggérer. Fondamentalement, j'ai une liste de valeurs (disons dans la ligne 24, colonnes C à U), et je voudrais créer une formule (plage) dans la rangée 25, qui me donnerait les valeurs distinctes des valeurs dans la gamme C24: U24.excel des valeurs uniques

J'ai utilisé la formule ci-dessous

=INDEX($C$24:$U24,MATCH(0,COUNTIF($B$25:B25,$C$24:$U$24),0)) 

Il ne fonctionne pas, il est juste de retour le 1er élément de la liste.

+1

Peut-être une question pour le superutilisateur? –

+1

Les valeurs de chaque cellule sont-elles un caractère, une chaîne, un mot ou un nombre unique? Aussi, voulez-vous que chaque élément de la liste soit combiné en une seule chaîne, et voulez-vous un séparateur pour chaque élément distinct (comme une virgule séparée)? – aevanko

+0

Cette formule a fonctionné pour moi lorsqu'elle a été entrée en tant que formule matricielle puis déplacée sur la ligne 25. Elle renverra "# N/A" si aucune autre valeur unique ne reste dans la ligne 24. – Excellll

Répondre

3

Vous devez toujours copier-coller la formule dans plusieurs cellules. Dans votre exemple, $B$25 serait la première cellule (à cause de cette partie de la formule: $B$25:B25). Lorsque vous faites glisser cette formule, elle vérifie si la valeur est déjà dans $B$25:B26 et ainsi de suite.

+0

Je ne suis pas en train de glisser la formule, j'utilise la formule de plage en utilisant ctrl + shift + enter .. (aussi ma gamme est en fait une ligne, mais ce n'est pas pertinent) – Charbel

+0

aussi j'ai essayé de le faire comme une cellule par cellule formule, et faites-le glisser horizontalement sur toute ma gamme de lignes, mais il revient aveC# n/a – Charbel

+0

pourrait-il être que les fonctions Excel ont changé un peu gâcher les résultats, j'ai essayé la fonction similaire dans http: //www.excelforum. com/excel-feuille de calcul-fonctions/363302-howto-select-distinct-values-from-list.html et un autre sur http://www.get-digital-help.com/2009/03/30/how-to- extract-a-unique-list-and-the-duplicates-in-excel-from-one-column/ – Charbel

2

Je sais que vous n'avez pas demandé une fonction VBA, mais au cas où certains lecteurs voudraient savoir comment faire cela via VBA, voici la fonction. Il prend une gamme de cellules et crée une chaîne d'éléments uniques seulement. Vous pouvez également ajouter un séparateur (comme si vous vouliez les séparer par des virgules).

Function UniqueList(ByVal cell_range As range, _ 
        Optional ByVal seperator As String = "") As String 

Dim vArray As Variant 
Dim result As String 
Dim i As Long, j As Long 
Dim v As Variant 
Dim dictionary As Object 
Set dictionary = CreateObject("scripting.dictionary") 

vArray = cell_range.Value 

For i = 1 To UBound(vArray, 1) 
    For j = 1 To UBound(vArray, 2) 
     If Len(vArray(i, j)) <> 0 Then 
      dictionary(vArray(i, j)) = 1 
     End If 
    Next 
Next 

For Each v In dictionary 
    result = result & (seperator & v) 
Next 

If Len(result) <> 0 Then 
    result = Right$(result, Len(result) - Len(seperator)) 
End If 

UniqueList = result 

End Function 

Pour ceux qui prennent soin: Il dumps les valeurs des cellules dans un tableau de variante, puis un dictionnaire Remplit avec chacun (sauf les cellules vides). Puisque les dictionnaires ne contiennent que des clés uniques, cela désherbe les dupes. Ensuite, je fais une boucle dans le dictionnaire et crée une chaîne avec chaque entrée. Je nettoie le séparateur supplémentaire à la fin de sorte que la liste est propre.