Option Explicit
Sub data_val()
Dim My_list As Object
Dim Rg As Range, CL As Range
Set Rg = Range("C3", Range("c2").End(4))
Set My_list = CreateObject("System.Collections.ArrayList")
With My_list
For Each CL In Rg
If Not .Contains(CL.Value) Then .Add CL.Value
Next
End With
With Cells(2, "H").Validation
.Delete
.Add 3, Formula1:=Join(My_list.ToArray, ",")
End With
Set My_list = Nothing
End Sub