Sub tim_tu()
Application.ScreenUpdating = False
Dim tim As String, dl As String, dic As Object
Dim i, j, dulieu, arr()
Dim th As Worksheet
Set dic = CreateObject("scripting.dictionary")
Set th = Sheets("tonghop")
tim = UCase(UserForm1.TextBox1.Value)
dulieu = th.Range(th.[B2], th.[B65536].End(3)).Value
ReDim arr(1 To UBound(dulieu, 1), 1 To 1)
With dic
For i = 1 To UBound(dulieu)
dl = UCase(dulieu(i, 1))
If InStr(1, dl, tim) <> 0 Then
If Not .exists(dulieu(i, 1)) Then
j = j + 1
.Add dulieu(i, 1), j
arr(j, 1) = dulieu(i, 1)
End If
End If
Next
End With
UserForm1.ListBox1.List = arr
Application.ScreenUpdating = False
End Sub