Việc sắp xếp dữ liệu trong Excel có rất nhiều lợi ích: giúp quản lý dữ liệu tốt hơn, tránh được sai sót, loại bỏ dòng trống thừa xen kẽ trong bảng tính… Vậy làm thế nào để có thể viết code trong VBA để tự động sắp xếp bảng tính trong Excel giúp tiết kiệm thời gian thực hiện thao tác này? Hãy cùng Học Excel Online tìm hiểu trong bài viết nhé.
Ví dụ chúng ta có bảng dữ liệu sau:
Bước 1: Record Macro cho thao tác Sắp xếp
Bước 2: Sau khi Record Macro, chúng ta vào cửa sổ VBA để kiểm tra code thu được
Phím tắt mở cửa sổ VBA: Alt + F11
Sub Macro1()
‘
‘ Macro1 Macro
‘
‘
Range(“A1:E5”).Select
ActiveWorkbook.Worksheets(“Data”).Sort.SortFields.Add2 Key:=Range(“A2:A5”), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(“Data”).Sort
.SetRange Range(“A1:E5”)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Bước 3: Tùy biến lại đoạn code để mở rộng phạm vi áp dụng
Trong đoạn code trên, chúng ta có:
Vùng làm tiêu chí sắp xếp là Range(“A2:A5”)
Vùng bảng tính được sắp xếp là Range(“A1:E5”)
Như vậy chỉ cần thay đổi tọa độ trong các vùng trên là chúng ta có thể sử dụng cho bất kỳ bảng dữ liệu nào.
Để không cố định phạm vi bảng tính tới dòng 5 mà là dòng cuối có dữ liệu, chúng ta sử dụng biến dòng cuối như sau:
Tham khảo: VBA – Tìm dòng/cột cuối cùng chứa dữ liệu trong Excel
Sub Macro1()
Dim lr As Long ‘Bien dong cuoi
lr = Worksheets(“Data”).Cells(Rows.Count, 1).End(xlUp).Row
‘Sap xep
ActiveWorkbook.Worksheets(“Data”).Sort.SortFields.Add2 Key:=Range(“A2:A” & lr), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(“Data”).Sort
.SetRange Range(“A1:E” & lr)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Như vậy phạm vi bảng dữ liệu cần sắp xếp sẽ tự động lấy tới dòng cuối có dữ liệu trong bảng.
Bước 4: Hoàn thiện đoạn code sắp xếp
Để hoàn thiện quy trình sắp xếp bảng dữ liệu, chúng ta cần bổ sung thêm 1 số nội dung như sau:
Đoạn code hoàn chỉnh như sau:
Các bạn có thể tải file Excel mẫu của bài viết này tại địa chỉ: http://bit.ly/31gweft