Hướng dẫn cách sắp xếp thứ tự dữ liệu tự động trong Excel bằng VBA
Ở bài học trước, chúng ta đã tìm hiểu về việc sử dụng chức năng Sort để sắp xếp thứ tự dữ liệu trong Excel. Xem lại bài học tại: Sắp xếp dữ liệu theo nhiều điều kiện trong Excel Trong bài này, hocexcel.online sẽ giúp các bạn ứng dụng tính năng này vào VBA để giúp chúng ta có thể tự động sắp xếp ...
Ở bài học trước, chúng ta đã tìm hiểu về việc sử dụng chức năng Sort để sắp xếp thứ tự dữ liệu trong Excel.
Xem lại bài học tại: Sắp xếp dữ liệu theo nhiều điều kiện trong Excel
Trong bài này, hocexcel.online sẽ giúp các bạn ứng dụng tính năng này vào VBA để giúp chúng ta có thể tự động sắp xếp lại dữ liệu mỗi khi nhập thêm dữ liệu mới vào bảng. Chúng ta tìm hiểu bài học này thông qua bài tập ví dụ sau:
Đề bài
Cho bảng dữ liệu sau:
Yêu cầu: Nhập dữ liệu vào vùng I2:M2, sau đó ấn vào nút mũi tên để lưu dữ liệu vào bảng dữ liệu A1:F28. Khi lưu dữ liệu vào bảng thì đồng thời:
- Xóa nội dung của dữ liệu đã nhập ở I2:M2 (làm mới dữ liệu)
- Sắp xếp tự động các nội dung trong bảng dữ liệu
Cách làm
Bước 1: Record Macro thao tác lọc dữ liệu
Tại tab Developer, chọn chức năng Record Macro
Thực hiện thao tác lọc dữ liệu trong bảng A1:F28
Sau khi thực hiện thao tác trên, chúng ta có được dòng lệnh Macro như sau:
Bước 2: Nhập dữ liệu vào vùng Nhập mới
Chúng ta có thể nhập dữ liệu bất kỳ ở vùng này
Ví dụ như sau:
Bước 3: Tạo lệnh Lưu dữ liệu
Căn cứ theo yêu cầu của đề bài, chúng ta có thể xác định được trình tự lưu dữ liệu bao gồm:
- Đưa dữ liệu từ vùng nhập mới vào Bảng dữ liệu
- Xóa dữ liệu ở vùng nhập mới
- Sắp xếp dữ liệu trong Bảng dữ liệu
Chúng ta mở cửa sổ VBA và tạo Sub Lưu dữ liệu như sau:
Sử dụng dấu nháy đơn để giúp chúng ta có thể ghi chú nội dung, giúp khi viết và đọc Code trong VBA sẽ dễ hơn
Code Lưu dữ liệu vào Bảng:
- Tìm dòng cuối trong bảng (các bạn có thể tìm hiểu thêm kiến thức về VBA trong khóa học VBA101 của thầy Thanh)
Dim DongCuoi As Long
DongCuoi = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row + 1
- Lưu dữ liệu vào dòng cuối
Sheet1.Range(“A” & DongCuoi & “:” & “F” & DongCuoi).Value = Sheet1.Range(“I2:N2”).Value
Code xóa dữ liệu ở vùng nhập mới (lưu ý là ô M2 có chứa công thức = Đơn giá * Số lượng, vì vậy chúng ta không cần xóa công thức này)
Sheet1.Range(“I2:M2”).ClearContents
Code sắp xếp dữ liệu: chúng ta gọi Macro sắp xếp đã thu được ở trên
Call Macro3
Lưu ý: nếu chúng ta đổi tên Macro3 thì phải đổi ở Sub Macro3 => Khi đó dòng lệnh Call sẽ gọi tên đã được đổi
* Kết quả dòng lệnh như sau:
Bước 4: Gán lệnh Lưu dữ liệu vào nút Mũi tên
- Vẽ nút mũi tên bằng cách chọn tab Insert => Shapes => Chọn nút mũi tên và vẽ ra
- Gán macro vào Shapes: click chuột phải vào nút mũi tên, chọn Assign Macro, sau đó chọn tới Macro Lưu dữ liệu
- Sau khi đã gán macro vào nút mũi tên, chúng ta thực hiện việc lưu dữ liệu. Và đây là kết quả của chúng ta:
Dòng tô màu vàng chính là dòng dữ liệu mà chúng ta vừa thêm mới vào bảng.
Các bạn có thể thấy là dòng này sau khi thêm đã được tự động sắp xếp theo thứ tự vào trong bảng, chứ không phải xuất hiện ở cuối bảng như thông thường.
Như vậy là chúng ta đã hoàn thành được yêu cầu của đề bài rồi. Nội dung này được ứng dụng rất nhiều trong việc quản lý dữ liệu, nhất là những dữ liệu lớn, cần sắp xếp theo nhiều điều kiện: thời gian, phân nhóm…
Chúc các bạn học tốt cùng hocexcel.online!