Lọc dữ liệu duy nhất các chuỗi trông 1 ô

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

anhkhang.ak1122

Thành viên mới
Tham gia
24/5/23
Bài viết
26
Được thích
4
Em chào các bác. Các bác giúp em làm sao để lọc dữ liệu duy nhất các chuỗi trông 1 ô với ạ. Em cảm ơn

1685675314945.png
 

File đính kèm

Dạ em dùng Excel 2016 ạ. Anh xem có cách nào giúp em với ạ. Em cảm ơn
 
Nếu dữ liệu các ô chỉ giới hạn 6 chuỗi có thể dùng công thức sau :

Mã:
=SUBSTITUTE(IF(MID(IF(MID(A2,8,6)=MID(A2,15,6),SUBSTITUTE(A2,MID(A2,8,6),"",1),A2),16,6)=MID(IF(MID(A2,8,6)=MID(A2,15,6),SUBSTITUTE(A2,MID(A2,8,6),"",1),A2),23,6),SUBSTITUTE(IF(MID(A2,8,6)=MID(A2,15,6),SUBSTITUTE(A2,MID(A2,8,6),"",1),A2),MID(IF(MID(A2,8,6)=MID(A2,15,6),SUBSTITUTE(A2,MID(A2,8,6),"",1),A2),16,6),"",1),IF(MID(A2,8,6)=MID(A2,15,6),SUBSTITUTE(A2,MID(A2,8,6),"",1),A2)),"  "," ")
 
Nếu Ex2016 thì dùng hàm UDF nhé
C2:
=loc(A2)

Cách dùng: Chuột phải tên sheet, View Code, Insert/Module 1
Dán code vô.
Lưu file dạng .xlsm
PHP:
Option Explicit
Function Loc(ByVal cell As Range)
Dim s
With CreateObject("Scripting.Dictionary")
    For Each s In Split(cell)
        If Not .exists(s) Then .Add s, ""
    Next
    Loc = Join(.keys, " ")
End With
End Function

Capture.JPG
 

File đính kèm

Em chào các bác. Các bác giúp em làm sao để lọc dữ liệu duy nhất các chuỗi trông 1 ô với ạ. Em cảm ơn

View attachment 290931
Bạn thử công thức này tại B2

B2=CONCAT(IFERROR(INDEX(MID(A2,(ROW(INDIRECT("1:"&(LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1)))-1)*7+1,6),AGGREGATE(15,6,ROW($1:$34)/(MATCH(MID(A2,(ROW(INDIRECT("1:"&(LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1)))-1)*7+1,6),MID(A2,(ROW(INDIRECT("1:"&(LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1)))-1)*7+1,6),0)=ROW(INDIRECT("1:"&(LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1)))),ROW(INDIRECT("1:"&(LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1))))),"")&REPT(" ",5))

Bạn xem file đính kèm, tốt nhất là dùng phiên bản OF365 hoặc VBA cho đỡ vất bạn ạ
 

File đính kèm

Dùng Power Query
Mã:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Added Custom" = Table.AddColumn(Source, "ket qua", each Text.Combine(List.Distinct(Text.Split([Dữ liệu]," "))," "))[ket qua]
in
    #"Added Custom"
Dùng Excel 2019
Mã:
=TEXTJOIN(" ",,FILTERXML("<m><n>"&SUBSTITUTE(A2," ","</n><n>")&"</n></m>","//n[not(preceding::*=.)]"))
Dùng Excel365
Mã:
=MAP(A2:A5,LAMBDA(m,TEXTJOIN(" ",,UNIQUE(TEXTSPLIT(m,," ")))))
1685679502364.png
 
Cảm ơn bác rất nhiều ạ. Code và công thức đều chạy tốt. Code ngon nhất rồi ạ.
 
Ngon?
Đít sần chỉ có hiệu quả với số lượng lượng tương đối lớn. Số lượng cỏn con (trung bình 4) chỉ mất công dựng Object lên.
Var lại ở đây là hàm UDF. Bao nhiêu hàng là dựng và hủy đối tượng bấy nhiêu lần.
 
Lần chỉnh sửa cuối:

Một cách không dùng dic

Mã:
Public Function LocDuyNhat(ByVal s As String) As String
Dim tmp As String, v As Variant
tmp = " "
For Each v In Split(s, " ")
    If InStr(tmp, " " & v & " ") = 0 Then tmp = tmp & v & " "
Next v
LocDuyNhat = Trim(tmp)

End Function

.
 
Web KT

Bài viết mới nhất

Back
Top Bottom