Làm sao để sắp xếp nhiều cột và hàng theo abc vậy ạ ? (2 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

gfhngjn

Thành viên mới
Tham gia
23/4/24
Bài viết
4
Được thích
0
đề bài
1746888273678.png
làm sao để cho kết quả như vậy ạ ?
1746888295289.png
 
Lần chỉnh sửa cuối:
Cái bài này cũng thú vị nhỉ nhưng chưa biết làm :D . Đưa tất cả trị vào Dictionary để loại bỏ trùng rồi dùng bubble sort xong chưa biết làm sao so sánh để cách dòng.
 
Thử code này. Chỉ chạy đúng với dữ liệu như trên hình.

JavaScript:
Option Explicit

Dim arrSort() As String

Sub NormalizeColumns()
    Dim ws As Worksheet, rng As Range
    Dim lastRow As Long, lastCol As Long
    Dim col As Long, r As Long
    Dim dict As Object
    Dim cellValue As String
    Dim arr(), arrSrc, arrResult(10, 5) As String, i As Long, j As Long, k As Long
   
    Set ws = ActiveSheet
    Set rng = ws.Range("A1:C5")
    arrSrc = rng
    lastRow = UBound(arrSrc, 1): lastCol = UBound(arrSrc, 2)
   
    Call TongHopVaSapXep
    For k = 1 To UBound(arrSrc, 2)
        For i = 0 To UBound(arrSort)
            'Debug.Print arrSort(i), arrSrc(i + 1, 1)
           
            For j = 1 To UBound(arrSrc, 1)
                Debug.Print "  --" & arrSrc(j, 1)
                If arrSort(i) = arrSrc(j, k) Then
                    arrResult(i, k - 1) = arrSrc(j, k)
                    Exit For
                Else
                    arrResult(i, k - 1) = "-"
                End If
            Next j
           
        Next i
    Next k
   
    Worksheets("Sheet1").Range("A8").Resize(UBound(arrResult, 1) + 1, UBound(arrResult, 2) + 1).Value = arrResult
   
End Sub

Sub TongHopVaSapXep()
    Dim rng As Range, cell As Range, temp As String
    Dim dict As Object
    Dim i As Long, j As Long, outputCol As Long

    Set rng = Sheet1.Range("A1:C5")
    Set dict = CreateObject("Scripting.Dictionary")
   
    ' Loc và thêm giá tri không trùng
    For Each cell In rng
        If Trim(cell.Value) <> "" Then
            If Not dict.exists(cell.Value) Then
                dict.Add cell.Value, 1
            End If
        End If
    Next cell
    'Chuyen thanh mang de so sanh
    ReDim arrSort(0 To dict.Count - 1)
    For i = 0 To dict.Count - 1
        arrSort(i) = dict.Keys()(i)
    Next i

    ' Bubble sort
    For i = 0 To UBound(arrSort) - 1
        For j = i + 1 To UBound(arrSort)
            If arrSort(i) > arrSort(j) Then
                temp = arrSort(i)
                arrSort(i) = arrSort(j)
                arrSort(j) = temp
            End If
        Next j
    Next i
End Sub
 

File đính kèm

Web KT

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

Back
Top Bottom