Nhờ các anh/chị giúp giải quyết bài toán trả về giá trị duy nhất

Liên hệ QC

Erebus

Thành viên mới
Tham gia
30/10/16
Bài viết
41
Được thích
6
Hiện tại em đang có 1 bài toán (như tệp đính kèm)
Dữ liệu ở sheet1 là dữ liệu gốc, các dãy số đang được ngăn cách bởi dấu "/"
Dữ liệu ở sheet2 là dữ liệu sau khi sử dụng "Text to columns"

Dữ liệu ở sheet Result là dữ liệu cần trả về: Là dữ liệu chứa các dãy số duy nhất trong toàn bộ dữ liệu ban đầu, được tổng hợp lại trong 1 cột

Em cần xử lý biến số liệu từ sheet1 hoặc sheet2 về kết quả đều được ạ

Kính nhờ các anh/chị giúp đỡ giải quyết ạ
 

File đính kèm

  • Book1.xlsx
    12.4 KB · Đọc: 23
Hiện tại em đang có 1 bài toán (như tệp đính kèm)
Dữ liệu ở sheet1 là dữ liệu gốc, các dãy số đang được ngăn cách bởi dấu "/"
Dữ liệu ở sheet2 là dữ liệu sau khi sử dụng "Text to columns"

Dữ liệu ở sheet Result là dữ liệu cần trả về: Là dữ liệu chứa các dãy số duy nhất trong toàn bộ dữ liệu ban đầu, được tổng hợp lại trong 1 cột

Em cần xử lý biến số liệu từ sheet1 hoặc sheet2 về kết quả đều được ạ

Kính nhờ các anh/chị giúp đỡ giải quyết ạ
Công thức này trên 365 em nhé.
Chị làm từ sheet1.
=LET(A,IFERROR(UNIQUE(FILTERXML("<p><c>"&SUBSTITUTE(TEXTJOIN("/",,A1:A30),"/","</c><c>")&"</c></p>","//c")),""),FILTER(A,A<>""))
 
Upvote 0
Hiện tại em đang có 1 bài toán (như tệp đính kèm)
Dữ liệu ở sheet1 là dữ liệu gốc, các dãy số đang được ngăn cách bởi dấu "/"
Dữ liệu ở sheet2 là dữ liệu sau khi sử dụng "Text to columns"

Dữ liệu ở sheet Result là dữ liệu cần trả về: Là dữ liệu chứa các dãy số duy nhất trong toàn bộ dữ liệu ban đầu, được tổng hợp lại trong 1 cột

Em cần xử lý biến số liệu từ sheet1 hoặc sheet2 về kết quả đều được ạ

Kính nhờ các anh/chị giúp đỡ giải quyết ạ
Thử với code này xem sao.
Mã:
Public Sub LocDuyNhat()
    Dim Rng As Range, i%
    Dim Dic As Object, Arr(), sNumber, aValue As String
    Set Dic = CreateObject("Scripting.Dictionary")
    i = 0
    For Each Rng In Sheet1.UsedRange
        For Each sNumber In Split(Rng.Value2, "/")
            aValue = CStr(sNumber)
            If Not (Dic.Exists(aValue)) And (aValue <> "") Then
                i = i + 1
                ReDim Preserve Arr(1 To i)
                Arr(i) = aValue
                Dic.Add aValue, aValue
            End If
        Next sNumber
    Next Rng
    If i Then Sheet3.Range("C2").Resize(i).Value = Application.Transpose(Arr)
    Set Dic = Nothing
End Sub
 
Upvote 0
Công thức này trên 365 em nhé.
Chị làm từ sheet1.
=LET(A,IFERROR(UNIQUE(FILTERXML("<p><c>"&SUBSTITUTE(TEXTJOIN("/",,A1:A30),"/","</c><c>")&"</c></p>","//c")),""),FILTER(A,A<>""))
Em cảm ơn rất nhiều ạ,
Hiện tại em không được dùng 365 nên chưa áp dụng ngay được, khi nào có e sẽ thử ạ
Bài đã được tự động gộp:

Thử với code này xem sao.
Mã:
Public Sub LocDuyNhat()
    Dim Rng As Range, i%
    Dim Dic As Object, Arr(), sNumber, aValue As String
    Set Dic = CreateObject("Scripting.Dictionary")
    i = 0
    For Each Rng In Sheet1.UsedRange
        For Each sNumber In Split(Rng.Value2, "/")
            aValue = CStr(sNumber)
            If Not (Dic.Exists(aValue)) And (aValue <> "") Then
                i = i + 1
                ReDim Preserve Arr(1 To i)
                Arr(i) = aValue
                Dic.Add aValue, aValue
            End If
        Next sNumber
    Next Rng
    If i Then Sheet3.Range("C2").Resize(i).Value = Application.Transpose(Arr)
    Set Dic = Nothing
End Sub
Cảm ơn bác rất nhiều ạ,
Ngay lập tức bài toán khó của em đã được giải quyết rồi ạ
 
Upvote 0
Web KT

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

Back
Top Bottom