Come cercare un valore e restituire più valori univoci (rimuovere i duplicati) in una singola cella - separati da virgola


0

Sto cercando di prendere un valore (id univoco) dalla colonna AC, fare una ricerca nella colonna (B) e restituire (cioè concatenare) il multiplo unico valori da una colonna adiacente (C) a una singola cella nella colonna AD. Voglio solo restituire i valori univoci, eliminare i duplicati e avere tutti i risultati restituiti in una singola cella, separati da virgola. Si prega di vedere l'esempio di seguito. Esistono circa 800 ID univoci da cercare e circa 5000 righe di dati. Sono aperto a una formula, array o soluzione VBA. Grazie.

    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

Risposte:


0

Userei una UDF di Excel (funzione definita dall'utente) per questo.

Impostalo in questo modo:

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

Da lì, basta usarlo come una formula. Il primo argomento è l'elenco completo di valori e il secondo argomento è il valore specifico su cui si desidera eseguire una ricerca.

=mylookup(B1:B90,AC1)

MODIFICARE: Ho perso uno dei tuoi requisiti originali, per filtrare i valori duplicati. Ho aggiunto un oggetto dizionario per farlo.


BryanC - La tua soluzione funziona, tranne che non elimina i duplicati. Ad esempio, utilizzando i miei dati di esempio, l'UDF suggerito restituisce i seguenti risultati quando si cerca un ID univoco = ABC: 444,444,555,555 Tuttavia, sto cercando di eliminare i duplicati in modo che il risultato quando si cerca l'ID univoco ABC sia = 444,555
Qorn

@Questo mi dispiace. risolto ora
BryanC

BryanC- Grazie mille, questo ha funzionato perfettamente! Tanto di cappello a te per essere venuto in soccorso.
Qorn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.