Hướng dẫn cách viết code VBA để tự động sắp xếp bảng tính Excel

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é.

Code VBA để tự động sắp xếp bảng tính Excel

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

  • Trong cửa sổ Developer bấm chọn mục Record Macro
  • Chọn bảng dữ liệu cần sắp xếp, ví dụ bảng A1:E5 như hình trên
  • Trong thẻ Data chọn mục Sort
  • Trong cửa sổ Sort, chọn tiêu chí sắp xếp, ví dụ là cột Tên hàng, sắp xếp theo thứ tự từ A – Z
  • Sau khi hoàn tất thao tác, bấm nút Stop Recording trong thẻ Developer

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:

  • Chỉ sắp xếp khi bảng tính có dữ liệu, tức là dòng cuối phải lớn hơn số dòng tiêu đề
  • Xóa các điều kiện sắp xếp trước đó rồi mới thực hiện lại việc sắp xếp

Đ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


Tác giả: duongquan211287

· · ·

Khóa học mới xuất bản