Comment rechercher une valeur et renvoyer plusieurs valeurs uniques (supprimer les doublons) dans une seule cellule - séparées par des virgules

0

J'essaie de prendre une valeur (identifiant unique) de la colonne AC, d'effectuer une recherche dans la colonne (B) et de renvoyer (ce qui signifie concaténer) unique les valeurs d'une colonne adjacente (C) à une seule cellule de la colonne AD. Je souhaite uniquement renvoyer les valeurs uniques, en éliminant les doublons, et obtenir tous les résultats dans une seule cellule, séparés par une virgule. Veuillez voir l'exemple ci-dessous. Il y a environ 800 ID uniques à rechercher et environ 5 000 lignes de données. Je suis ouvert à une formule, un tableau ou une solution VBA. Merci.

    Source Data:
    Column B     Column C   ....  Column AC (unique ID)
    DEF          111               ABC
    DEF          222               DEF
    DEF          111               GHI
    ABC          444               JKL
    DEF          333
    DEF          111
    ABC          444
    ABC          555
    JKL          666
    JKL          666
    GHI          777
    GHI          888
    ABC          555

   Desired Output:
    Column B     Column C   ....  Column AC  Column AD (unique values comma separated)
    DEF          111               ABC       444,555
    DEF          222               DEF       111,222,333
    DEF          111               GHI       777,888
    DEF          333               JKL       666,999
    DEF          111
    ABC          444
    ABC          555
    JKL          666
    JKL          666
    JKL          999
    GHI          777
    GHI          888
    ABC          555
Qorn
la source

Réponses:

0

J'utiliserais un UDF Excel (fonction définie par l'utilisateur) pour cela.

Configurez-le comme ceci:

Public Function mylookup(inputrange As Range, match As Range) As String
Dim arr() As Variant
Dim d As Object
Dim result As String
Dim i As Integer
Dim v As Variant
Set d = CreateObject("Scripting.Dictionary")
arr() = inputrange.Value

For i = 1 To UBound(arr)
    If arr(i, 1) = match Then
        d(arr(i, 2)) = 1
    End If
Next i
For Each v In d.Keys()
        result = result & v & ","
Next v
    result = Left(result, Len(result) - 1)

mylookup = result

End Function

À partir de là, utilisez-le simplement comme une formule. Le premier argument est la liste complète des valeurs et le second argument est la valeur spécifique sur laquelle vous souhaitez effectuer une recherche.

=mylookup(B1:B90,AC1)

MODIFIER: J'ai manqué l'une de vos exigences d'origine, pour filtrer les valeurs en double. J'ai ajouté un objet dictionnaire pour le faire.

BryanC
la source
BryanC - Votre solution fonctionne, mais elle n’élimine pas les doublons. Par exemple, à l'aide de mes exemples de données, la fonction utilisateur définie par l'utilisateur renvoie les résultats suivants lors de la recherche d'un ID unique = ABC: 444 444 555 555 Cependant, je cherche à éliminer les doublons afin que le résultat lors de la recherche d'un ID unique ABC soit = ​​444 555
Qorn
@ Qorn désolé pour ça. corrigé maintenant.
BryanC
BryanC- Merci beaucoup, cela a parfaitement fonctionné! Chapeau à toi d'être venu à la rescousse.
Qorn