Như thế nào sort dòng theo thứ tự (sort từng dòng riêng lẽ) (1 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

chinhdayroi

Thành viên mới
Tham gia
8/7/23
Bài viết
5
Được thích
0
Chào các bác, các anh chị và các thầy.
Tình hình là em đang chạy SEO. Có data spin trên mạng nhưng trùng lặp nhiều quá, em muốn lọc trùng để xoá bớt.
Nó trùng lặp kiểu này nên phải tách ra xử lý, xoá trùng rồi đóng gói lại mới được ạ

Vd: "anh|chi|cha|mẹ" thì có một dòng khác trùng nhưng bị đổi vị trí {ba|anh|me|chi}

Điều em cần là tách hết các cell data thành từng cell chứa: anh, chị,cha,me ra 1 hàng rồi sắp xếp sau đó có thể đóng gói về định dạng cũ. Em tách gằng cell ra từng cell ok nhưng chả biết sắp xếp chúng lại như thế nào. Có vẻ cần VBA liên quan mảng 2 chiều ? không biết đúng không

Em đã tách dử liệu dạng "cụn từ 1|cụm từ 2|cụm từ 3"..... thành từng cell riêng rồi
thứ em cần là sắp xếp lại theo thứ tự từng dòng sau đó em lại đóng gói về dạng "cụn từ 1|cụm từ 2|cụm từ 3" để chạy tool
Chà em thử sort theo dòng trong excel nhưng nó sắp xép lung tung cả

Em đính kèm file mẫu ở đây xem thầy nào, bác nào giúp được em không.

Chú thích sheet1: và yêu cầu của em
Sheet 2 là data mẫu ạ.
 

File đính kèm

Chà em thử sort theo dòng trong excel nhưng nó sắp xép lung tung cả
.
Dùng thử UDF:

PHP:
Public Function MySort(ByVal s As String) As String
' Sort theo dòng
Dim a As Variant, i&, j&, u&, tmp$
a = Split(s, "|")
u = UBound(a)
For i = 0 To u - 1
    For j = i + 1 To u
        If a(i) > a(j) Then
            tmp = a(i)
            a(i) = a(j)
            a(j) = tmp
        End If
    Next j
Next i
MySort = Join(a, "|")
End Function

Cách dùng:

=MySort(A1)
.
 

File đính kèm

Quá xịn anh. cảm ơn vạn lần. VBA có vài dòng mà sưc mạnh ghê gớm. mỗi tội ít khi dùng excel nên không học. cảm ơn sếp lần nữa ạ
 
.
Dùng thử UDF:

PHP:
Public Function MySort(ByVal s As String) As String
' Sort theo dòng
Dim a As Variant, i&, j&, u&, tmp$
a = Split(s, "|")
u = UBound(a)
For i = 0 To u - 1
    For j = i + 1 To u
        If a(i) > a(j) Then
            tmp = a(i)
            a(i) = a(j)
            a(j) = tmp
        End If
    Next j
Next i
MySort = Join(a, "|")
End Function

Cách dùng:

=MySort(A1)
.
Anh biết làm sao lọc luôn không anh, mới kiểm tra lại thì nhiều cái dính trùng nội dung
ví dụ:

nội dung trùng|nội dung 1|nội dung 2|nội dung trùng|nội dung 3
ở đây nội dung trùng xuất hiện 2 lần, xoá thủ công thì mờ mắt luôn. Thử xoá 200 dòng cả tiếng đồng hồ bỏ cuộc. Mong pro nào vào giúp em với
 
vì đợi lâu quá nên em nhờ Chat GPT. không ngờ nó thông minh ngoài sức tưởng
đây là code do nó tạo chạy hoàn hảo

Mã:
Public Function MySortAndFilter(ByVal s As String) As String
    ' Chuyển các giá trị thành mảng
    Dim a As Variant, aFiltered() As Variant
    Dim i As Long, j As Long, u As Long, uFiltered As Long
    a = Split(s, "|")
    u = UBound(a)
    
    ' Lọc các giá trị không rỗng và loại bỏ giá trị trùng
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    For i = 0 To u
        If Trim(a(i)) <> "" And Not dict.exists(a(i)) Then
            dict.Add a(i), 0
        End If
    Next i
    
    ' Chuyển các giá trị duy nhất vào mảng mới
    uFiltered = dict.Count - 1
    ReDim aFiltered(uFiltered)
    i = 0
    For Each item In dict.keys
        aFiltered(i) = item
        i = i + 1
    Next item
    
    ' Sắp xếp mảng mới
    For i = 0 To uFiltered - 1
        For j = i + 1 To uFiltered
            If aFiltered(i) > aFiltered(j) Then
                tmp = aFiltered(i)
                aFiltered(i) = aFiltered(j)
                aFiltered(j) = tmp
            End If
        Next j
    Next i
    
    ' Nối các giá trị trong mảng mới lại thành chuỗi kết quả
    MySortAndFilter = Join(aFiltered, "|")
End Function
 
vì đợi lâu quá nên em nhờ Chat GPT. không ngờ nó thông minh ngoài sức tưởng
đây là code do nó tạo chạy hoàn hảo

Public Function MySortAndFilter(ByVal s As String) As String
' Chuyển các giá trị thành mảng
Dim a As Variant, aFiltered() As Variant
Dim i As Long, j As Long, u As Long, uFiltered As Long
a = Split(s, "|")
u = UBound(a)

' Lọc các giá trị không rỗng và loại bỏ giá trị trùng
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
For i = 0 To u
If Trim(a(i)) <> "" And Not dict.exists(a(i)) Then
dict.Add a(i), 0
End If
Next i

' Chuyển các giá trị duy nhất vào mảng mới
uFiltered = dict.Count - 1
ReDim aFiltered(uFiltered)
i = 0
For Each item In dict.keys
aFiltered(i) = item
i = i + 1
Next item

' Sắp xếp mảng mới
For i = 0 To uFiltered - 1
For j = i + 1 To uFiltered
If aFiltered(i) > aFiltered(j) Then
tmp = aFiltered(i)
aFiltered(i) = aFiltered(j)
aFiltered(j) = tmp
End If
Next j
Next i

' Nối các giá trị trong mảng mới lại thành chuỗi kết quả
MySortAndFilter = Join(aFiltered, "|")
End Function
Chi cần thêm 1 vòng lặp loại trùng, không dùng thư viện "Scripting.Dictionary".

Mã:
Public Function SortAndFilter(ByVal s As String) As String
' Sort theo dòng
Dim a As Variant, i&, j&, u&, k&, tmp$
a = Split(s, "|")
u = UBound(a)
For i = 0 To u - 1
    For j = i + 1 To u
        If a(i) > a(j) Then
            tmp = a(i)
            a(i) = a(j)
            a(j) = tmp
        End If
    Next j
Next i

' loc trung
tmp = ""
For i = 0 To u
    If a(i) <> tmp Then
        a(k) = a(i)
        k = k + 1
    End If
    tmp = a(i)
Next i
ReDim Preserve a(0 To k - 1)
SortAndFilter = Join(a, "|")
End Function
 
Chi cần thêm 1 vòng lặp loại trùng, không dùng thư viện "Scripting.Dictionary".

Mã:
Public Function SortAndFilter(ByVal s As String) As String
' Sort theo dòng
Dim a As Variant, i&, j&, u&, k&, tmp$
a = Split(s, "|")
u = UBound(a)
For i = 0 To u - 1
    For j = i + 1 To u
        If a(i) > a(j) Then
            tmp = a(i)
            a(i) = a(j)
            a(j) = tmp
        End If
    Next j
Next i

' loc trung
tmp = ""
For i = 0 To u
    If a(i) <> tmp Then
        a(k) = a(i)
        k = k + 1
    End If
    tmp = a(i)
Next i
ReDim Preserve a(0 To k - 1)
SortAndFilter = Join(a, "|")
End Function
mã này thiếu lọc rỗng dấu trắng giữa | |
nội dung trùng|ffff fffff 123|nội dung trùng| |nội dung trùng
 
Web KT

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

Back
Top Bottom