Public Sub LIST()
Dim Dic As Object, Arr(), I As Long, TEM As String, K As Long
Dim rng As Range
Application.ScreenUpdating = False
Set Dic = CreateObject("Scripting.Dictionary")
DONGCUOI = Sheet1.Range("D65000").End(xlUp).Row
Set rng = Sheet1.Range("D2:D" & DONGCUOI)
ReDim Arr(1 To DONGCUOI)
For I = 1 To DONGCUOI - 1
TEM = rng(I, 1)
If Not Dic.Exists(TEM) Then
K = K + 1
Dic.Add TEM, K
Arr(K) = rng(I, 1).Value
End If
Next I
TEM = Join(Arr, ",")
For I = K To DONGCUOI
TEM = Replace(TEM, ",,", ",")
Next
TEM = Left(TEM, Len(TEM) - 1)
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=TEM
End With
Application.ScreenUpdating = true
End Sub