concatena apenas valores únicos

0

Eu tenho essa função

Public Function CONCATENATESPECIAL(rng As Range) As String
Dim rng1 As Range

CONCATENATESPECIAL = ""

For Each rng1 In rng
    If (Not Rows(rng1.Row).Hidden) And (rng1.Value <> "") Then
    CONCATENATESPECIAL = CONCATENATESPECIAL & rng1.Text & "|"
    End If
Next rng1

End Function

Basicamente, concatena valores em alguns intervalos com "|".

O que eu preciso é - é possível editá-lo, para - se houver, nesse intervalo alguns valores duplicados, para incluí-lo apenas uma vez? Para resumir - concatene apenas valores únicos.

Obrigado antecipadamente

    
por Roman Žydyk 18.04.2017 / 18:58

1 resposta

1

Eu provavelmente faria dessa maneira. Gostaria de adicionar tudo a uma coleção e definir a chave igual ao valor do intervalo. O bit on error resume next impedirá que ele seja acionado quando tentar colocar uma duplicata na coleção. Eu precisaria de um pouco mais de validação, mas na maioria das vezes deve ser suficiente.

Public Function concatenatespecial(rng As Range) As String

Dim col As New Collection
Dim rng1 As Range
Dim str As String
Dim itm As Variant

On Error Resume Next
For Each rng1 In rng
    If rng1 <> "" Then
        col.Add rng1.Value, rng1.Value
    End If
Next rng1
On Error GoTo 0

For Each itm In col
    str = str & "|" & itm
Next itm

concatenatespecial = str

End Function
    
por 18.04.2017 / 20:59