I'd suggest you upload sample workbook, with data set that represent your actual data (i.e. desensitize data, but keep exactly the same data type and structure).
As well, this can easily be done using PowerQuery. Do you have access to it?
Sub Demo()
Dim cel As Range
With CreateObject("Scripting.Dictionary")
For Each cel In Range("B3:B" & Cells(Rows.Count, 2).End(xlUp).Row).Cells
If Len(cel.Value) > 0 Then
.Item(cel.Value) = 1
End If
Next
[E3].Value = Join(.Keys, ";")
End With
End Sub