Tự động sắp xếp lại dữ liệu sau mỗi lúc vào dữ liệu

Trong Excel bạn có thể sắp xếp lại dữ liệu theo thứ tự tăng hoặc giảm dần sau khi vào dữ liệu , tuy nhiên bạn cũng có thể thực hiện việc này một cách tự động .

Để tự động sắp xếp lại dữ liệu mỗi khi bạn vào hết dữ liệu cách phải thực hiện thông qua Macro và dưới đây là một ví dụ .

Bạn có bảng Danh muc , Mo ta và Don gia , bôi đen tạm thời khu vực bạn sẽ thực hiện , bấm Insert > Table

 

\"\"

 

Bạn đánh dấu tích vào ô My table has header , rồi bấm OK

 

\"\"

 

\"\"

 

Tiếp theo bạn bấm tổ hợp phím ALT-F11 để vào cửa sổ Microsoft Visual Basic .

Nếu dữ liệu của bạn đang dùng ở Sheet nào thì hãy bấm đúp chọn vào Sheet đó , trong ví dụ này là Sheet1 , bấm đúp vào Sheet1 để đưa Macro

 

\"\"

 

Bạn hãy dán Macro có nội dung bên dưới

 

\"\"

 

Private Sub Worksheet_Change(ByVal Target As Range)

Dim ACell As Range

Dim ActiveCellInTable As Boolean

Dim r As Single

Dim Value As Variant

Set ACell = Target

On Error Resume Next

ActiveCellInTable = (ACell.ListObject.Name = "Table1")

On Error GoTo 0

If ActiveCellInTable = True Then

    r = Target.Row - Target.ListObject.Range.Row + 1

    For c = 1 To ActiveSheet.ListObjects(ACell.ListObject.Name).Range.Columns.Count

        If ActiveSheet.ListObjects(ACell.ListObject.Name).Range.Cells(r, c).Value = "" Then Exit Sub

    Next c

    With ActiveSheet.ListObjects(ACell.ListObject.Name).Sort

        .SortFields.Clear

        .SortFields.Add _

            Key:=Range("Table1[[#All],[Danh muc]]"), SortOn:=xlSortOnValues, Order _

            :=xlAscending, DataOption:=xlSortNormal

        .Apply

    End With

End If

End Sub

 

Bạn lưu ý muốn sắp xếp cột nào thì nhớ gõ cột tương ứng ở dòng

 

Key:=Range("Table1[[#All],[Danh muc]]"),

 

Trong ví dụ trên sắp xếp theo cột Danh muc .

Quay trở lại Excel , lúc này bạn có thể tự do vào dữ liệu và sau mỗi khi kết thúc nó sẽ tự động sắp xếp lại rất tiện lợi .

 

\"\"

 

\"\"

 

\"\"\"\"\"\"