Lấy dữ liệu trùng của các ô nối lại với nhau (1 người xem)

  • Thread starter Thread starter vandia
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Đây là hàm lấy trùng:
PHP:
Public Function LayDuLieuTrung(ByVal s As String) As String
Dim lenS As Long, kyTu As String, temp As String
lenS = Len(s)
Do While lenS > 0
    kyTu = Left(s, 1)
    s = Replace(s, kyTu, "")
    If lenS - Len(s) > 1 Then
        temp = temp & "," & kyTu
    End If
    lenS = Len(s)
Loop
If Len(temp) > 0 Then LayDuLieuTrung = Mid(temp, 2)
End Function
Thêm hàm JoinText của ndu96081631 để nối chuỗi lại.

 
Upvote 0
"936303161" => "9,3,6,1"
Nếu kết quả trả về là "1,3,6,9" có được không bạn?
Được bạn ơi
View attachment 255080
bác nói e mới để ý :D
do dữ liệu của bạn ấy đã sai trước, em chỉ muốn hỏi là kết quả có lấy theo thứ tự không thôi :D
Cảm ơn bạn, mình bị nhầm không có số 9
Bài đã được tự động gộp:

Số 9 đâu có bị lặp?
Cảm ơn bạn mình bị nhầm số 9 không có
Bài đã được tự động gộp:

Đây là hàm lấy trùng:
PHP:
Public Function LayDuLieuTrung(ByVal s As String) As String
Dim lenS As Long, kyTu As String, temp As String
lenS = Len(s)
Do While lenS > 0
    kyTu = Left(s, 1)
    s = Replace(s, kyTu, "")
    If lenS - Len(s) > 1 Then
        temp = temp & "," & kyTu
    End If
    lenS = Len(s)
Loop
If Len(temp) > 0 Then LayDuLieuTrung = Mid(temp, 2)
End Function
Thêm hàm JoinText của ndu96081631 để nối chuỗi lại.

Cảm ơn bạn, sao mình không sử dụng hàm được nhỉ?
 
Lần chỉnh sửa cuối:
Upvote 0
mình xin góp chút cốt
1615178443748.png
Mã:
Function Trung(ParamArray args() As Variant) As String
    Dim i As Long
    Dim cell As Range
    For i = LBound(args) To UBound(args)
        If TypeName(args(i)) = "Range" Then
            For Each cell In args(i)
                Trung = Trung & Loc(cell.Value)
            Next cell
        Else
            Trung = Trung & Loc(args(i))
        End If
    Next i
    If Len(Trung) > 0 Then
        Trung = Mid(Trung, 2)
    Else
        Trung = "khong co"
    End If
End Function

Private Function Loc(cell As Variant) As String
    Dim dai As Long, kyTu As String, temp As String
    dai = Len(cell)
    Do While dai > 0
        kyTu = Left(cell, 1)
        cell = Replace(cell, kyTu, "")
        If dai - Len(cell) > 1 Then
            temp = temp & "," & kyTu
        End If
        dai = Len(cell)
    Loop
    If Len(temp) > 0 Then Loc = "-" & Mid(temp, 2)
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Google Sheets lèo cái được.

=TEXTJOIN(", ",true,UNIQUE(FILTER(mid(A1,row(INDIRECT("1:"&len(A1))),1),COUNTIF(mid(A1,row(INDIRECT("1:"&len(A1))),1),mid(A1,row(INDIRECT("1:"&len(A1))),1))>1)))

=ArrayFormula(TEXTJOIN(", ",true,query((QUERY(mid(A1,row(INDIRECT("1:"&len(A1))),1),"Select Col1,count(Col1) group by Col1",0)),"select Col1 where Col2>1",0)))

Bao giờ Excel mới 'nhớn' :-p
 
Upvote 0
mình xin góp chút cốt
View attachment 255087
Mã:
Function Trung(ParamArray args() As Variant) As String
    Dim i As Long, s As String
    Dim cell As Range
    s = ""
    For i = LBound(args) To UBound(args)
        If TypeName(args(i)) = "Range" Then
            For Each cell In args(i)
                Trung = Trung & Loc(cell.Value)
            Next cell
        Else
            Trung = Trung & Loc(args(i))
        End If
    Next i
    If Len(Trung) > 0 Then
        Trung = Mid(Trung, 2)
    Else
        Trung = "khong co"
    End If
End Function

Private Function Loc(cell As Variant) As String
    Dim dai As Long, kyTu As String, temp As String
    dai = Len(cell)
    Do While dai > 0
        kyTu = Left(cell, 1)
        cell = Replace(cell, kyTu, "")
        If dai - Len(cell) > 1 Then
            temp = temp & "," & kyTu
        End If
        dai = Len(cell)
    Loop
    If Len(temp) > 0 Then Loc = "-" & Mid(temp, 2)
End Function
Cảm ơn bạn @lubu08 chuẩn đét rồi
Chúc bạn vui vẻ hạnh phúc
Bài đã được tự động gộp:

Google Sheets lèo cái được.

=TEXTJOIN(", ",true,UNIQUE(FILTER(mid(A1,row(INDIRECT("1:"&len(A1))),1),COUNTIF(mid(A1,row(INDIRECT("1:"&len(A1))),1),mid(A1,row(INDIRECT("1:"&len(A1))),1))>1)))

=ArrayFormula(TEXTJOIN(", ",true,query((QUERY(mid(A1,row(INDIRECT("1:"&len(A1))),1),"Select Col1,count(Col1) group by Col1",0)),"select Col1 where Col2>1",0)))

Bao giờ Excel mới 'nhớn' :p
Cảm ơn bạn @befaint mình sẽ sử dụng hàm của bạn @lubu08
 
Upvote 0
Google Sheets lèo cái được.

=TEXTJOIN(", ",true,UNIQUE(FILTER(mid(A1,row(INDIRECT("1:"&len(A1))),1),COUNTIF(mid(A1,row(INDIRECT("1:"&len(A1))),1),mid(A1,row(INDIRECT("1:"&len(A1))),1))>1)))

=ArrayFormula(TEXTJOIN(", ",true,query((QUERY(mid(A1,row(INDIRECT("1:"&len(A1))),1),"Select Col1,count(Col1) group by Col1",0)),"select Col1 where Col2>1",0)))

Bao giờ Excel mới 'nhớn' :p
1615179436779.png
1615179549732.png
Sao mình thử cả 2 công thức không được bạn ơi?
 
Upvote 0
Thêm cách tham khảo dùng office365
Mã:
=TEXTJOIN(",",,UNIQUE(FILTERXML("<a><b>"&TEXTJOIN("</b><b>",,MID(B3,SEQUENCE(LEN(B3)),1))&"</b></a>","//b[preceding::*=.]")))
or
=LET(a,MID(B3,SEQUENCE(LEN(B3)),1),TEXTJOIN(",",1,UNIQUE(IF(MMULT(N(a=TRANSPOSE(a)),SEQUENCE(LEN(B3))^0)>1,a,""))))
 
Upvote 0
Web KT

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

Back
Top Bottom