'below is a unique string concatenation
Function StringConcat(str_delim As String, ParamArray rng_txt() As Variant) As String
Dim oDic As Object, v, c_i As Long, n As Long, i As Long, cell As Range
Set oDic = CreateObject("Scripting.Dictionary")
n = 1
For c_i = LBound(rng_txt) To UBound(rng_txt) Step 1
If TypeName(rng_txt(c_i)) = "Range" Then
For Each cell In rng_txt(c_i)
v = Split(Trim(cell.Value), str_delim)
For i = LBound(v) To UBound(v)
v(i) = Trim(v(i))
If Not oDic.exists(v(i)) Then
n = n + 1
oDic.Add v(i), n
End If
Next i
Next cell
End If
Next c_i
StringConcat = Join(oDic.keys, str_delim)
Set oDic = Nothing
End Function