Function Filter2List(List1 As String, List2 As String, FilterType As Byte, _
Optional Delimiter1 As String = ",", Optional Delimiter2 As String = ",") As String
'List1: Danh sach 1
'List2: Danh sach 2
'FilterType: Kieu loc
'+ 0: Co ca trong List1 va List2
'+ 1: Co trong List1, khong co trong List2
'+ 2: Khong co trong List1, co trong List2
'Delimiter1, Delimiter2: Ky tu phan tach cac phan tu trong List1, List2 (mac dinh la ",")
Dim Temp1, Temp2, Res0(), Res1(), Res2()
Dim I As Long, K0 As Long, K1 As Long, K2 As Long
'Kiem tra thong so FilterType
If FilterType > 2 Then Exit Function
'Mang 1 chieu chua toan bo phan tu cua List1
Temp1 = Split(List1, Delimiter1)
'Mang 1 chieu chua toan bo phan tu cua List2
Temp2 = Split(List2, Delimiter2)
For I = LBound(Temp1) To UBound(Temp1)
If InStr(1, List2, CStr(Temp1(I))) Then 'Phan tu cua List1 nam trong List2
K0 = K0 + 1
ReDim Preserve Res0(1 To K0)
Res0(K0) = CStr(Temp1(I))
Else
'Phan tu Co trong List1, khong nam trong List2
K1 = K1 + 1
ReDim Preserve Res1(1 To K1)
Res1(K1) = CStr(Temp1(I))
End If
Next I
For I = LBound(Temp2) To UBound(Temp2)
If InStr(1, List1, CStr(Temp2(I))) = 0 Then
'Phan tu Khong co trong List1, chi co trong List2
K2 = K2 + 1
ReDim Preserve Res2(1 To K2)
Res2(K2) = CStr(Temp2(I))
End If
Next I
If FilterType = 0 Then
Filter2List = Join(Res0, ",")
ElseIf FilterType = 1 Then
Filter2List = Join(Res1, Delimiter1)
ElseIf FilterType = 2 Then
Filter2List = Join(Res2, Delimiter2)
End If
End Function