khi em sử dụng hàm =TEXTJOIN(",",1,IF('Personal Report'!$K:$K=A3,'Personal Report'!$A:$A,"")) thì nó sẽ ra kq như này:
22522,22522,14227,15353,20876,22522,22634 |
Nó có các kq bị trùng,cho e hỏi là làm sao để xóa những cái bị trùng để cho gọn lại. Em xin cảm ơn!
Nếu vẫn còn quan tâm thì thử chạy đoạn code này xem. Kết quả trả về đang để ỏ cột H để dễ đối chiếu. bạn có thể thay đổi.
Anh chị em nào có ghé qua xin xem code và giải thích giúp một số vấn đề dưới đây:
1/Không hiểu file fiter kiểu gì mà mang về máy của mình cứ mỗi lần clearfiter là treo máy.
2/Dữ liệu ở cột F cũng không hiểu định dạng là thế nào mà khi chạy code lại ra là như vậy. mình đã copy toàn bộ cột F đem về file khác paste value và chạy code thì ra được kết quả như ý định.
3/ khi để Option Base 1 ở đầu modul thì ra kết quả khác vói không có Option Base 1.
4/ Nếu vô hiệu dòng On Error Resume Next thì vấp lỗi (Arr(i,i)=Error 2015) - không hiểu là gì?
Trân trọng!
Code
Option Base 1
Sub LOC()
Dim Arr(), sKQ() As String, S, k&
Dim i&, j&, t&, Lr&
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
'On Error Resume Next
With Sheets("CT ")
Lr = .Range("F" & Rows.Count).End(xlUp).Row
Arr = .Range("F2:F" & Lr).Value
ReDim KQ(1 To UBound(Arr), 1 To 1)
For i = 1 To UBound(Arr)
Set dic = Nothing
Set dic = CreateObject("Scripting.Dictionary")
t = 0
ReDim sKQ(1 To 10)
S = Split(Arr(i, 1), ",") ' Chi chuoi vao thì hiên lên dòng Arr(i,1)=Error 2015
For j = 0 To UBound(S)
DK = S(j)
If Not dic.Exists(DK) Then
t = t + 1
dic.Add DK, t
sKQ(t) = DK ' tao mang moi
End If
Next j
For k = 0 To UBound(sKQ)
If sKQ(k) <> Empty Then
If .Cells(i + 1, 8) = Empty Then
.Cells(i + 1, 8) = sKQ(k)
Else
.Cells(i + 1, 8) = .Cells(i + 1, 3) & ";" & sKQ(k)
End If
End If
Next k
Next i
End With
Set dic = Nothing
End Sub