Các macro Excel có thể không toàn diện như những công cụ tự động hóa khác, nhưng không thể làm suy yếu tính hợp lệ và hiệu quả của Excel VBA. Nếu bạn làm việc trong Excel và các công cụ Microsoft Office khác như Word và Access, bạn sẽ hài lòng với VBA và các khả năng của nó.
MS Excel là một công cụ mạnh mẽ cung cấp nhiều tùy chọn cho người dùng. Từ lưu trữ dữ liệu đến tạo dashboard tự động, bạn có thể thực hiện tất cả trong Excel và các bảng tính của nó.
Nếu bạn muốn sử dụng VBA để tự động hóa nhiệm vụ sắp xếp trong Excel, hãy thử các macro dễ áp dụng hiệu quả này.
Lưu ý:
Đối với người mới bắt đầu, bạn có thể tải xuống một tập dữ liệu ví dụ để luyện các kỹ năng macro Excel. Khi đã hiểu rõ các macro này và cách mọi thứ hoạt động, bạn có thể thay đổi code để phù hợp với bảng tính của riêng mình.
Tải tập dữ liệu ví dụ sử dụng trong bài viết này tại đây.
https://go.skimresources.com/?id=85009X1675668&isjs=1&jv=15.2.1-stackpath&sref=https%3A%2F%2Fwww.makeuseof.com%2Fexcel-macros-for-sorting-data%2F&url=http%3A%2F%2Fgo.microsoft.com%2Ffwlink%2F%3FLinkID%3D521962&xs=1&xtz=-420&xuuid=dbea3bd8a7fea598ef62218623c00da5&xjsf=other_click__auxclick%20%5B2%5D
1. Sắp xếp một cột bằng Excel Macro
Hãy sử dụng code đơn giản này để sắp xếp cột dữ liệu trong bảng tính Excel. Nếu đã tải xuống tập dữ liệu mẫu, bạn có thể thử sắp xếp cột E (Units Sold).
Mở một file Excel mới và lưu nó ở định dạng workbook Excel Macro-Enabled Workbook (.xlsm). File này sẽ lưu trữ macro để sắp xếp dữ liệu của bạn từ file khác.
Bạn sẽ kiểm soát (các) file của mình từ file macro, file này sẽ tương tác riêng với các workbook của bạn.
Nhập code sau:
Sub sortwithheaders()
Workbooks("Financial Sample.xlsx").Sheets(1).Activate
Range("A1:P701").sort Key1:=Range("e1"), Order1:=xlAscending, Header:=xlYes
End Sub
Trong đó:
- Key1: Xác định (các) cột mà bạn muốn sắp xếp
- Order1: Phương thức đặt hàng (tăng dần / giảm dần)
- Header: Nếu nội dung của bạn có header, tùy chọn này sẽ vẫn là xlYeHeaders. Nếu không, hãy chọn xlNo.
Phạm vi sẽ bao gồm địa chỉ ô bắt đầu và ô kết thúc để mọi thứ được ghi lại cho mục đích sắp xếp. Kết quả là toàn bộ tập dữ liệu của bạn sẽ được sắp xếp dựa trên dữ liệu trong cột E.
2. Sắp xếp dữ liệu động trong một cột
Có thể có những trường hợp trong đó điểm bắt đầu của bạn được xác định, nhưng điểm cuối lại là động. Trong trường hợp như vậy, bạn có thể làm cho code của mình động để nó tự động nhận điểm cuối trong phạm vi.
Để đáp ứng sự thay đổi trong dữ liệu, hãy sử dụng code bên dưới:
Sub sortwithheaders()
Workbooks("Financial Sample.xlsx").Sheets(1).Activate
Range("A1", Range("A1").End(xlDown)).sort Key1:=Range("e2"), Order1:=xlAscending, Header:=xlYes
End Sub
Trong đó:
- End (xlDown): Hàm này sẽ tự động chọn ô được điền cuối cùng một cách tự động
Lưu ý: Nếu công thức gặp một ô trống trong một cột, công thức sẽ coi ô trước đó là phần cuối của phạm vi.
3. Sắp xếp nhiều cột cùng nhau
Có thể có những tình huống khi bạn muốn sắp xếp dữ liệu ở nhiều cột trong một lần. Để làm như vậy, bạn có thể sử dụng code sau:
Sub SortMultipleColumns()
With Worksheets("Sheet1")
With .Cells(1, "A").CurrentRegion
.Cells.sort Key1:=.Range("B1"), Order1:=xlAscending, _
Key2:=.Range("E1"), Order2:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
End With
End With
End Sub
4. Sắp xếp các cột trên nhiều trang tính
Khi xử lý nhiều trang tính, bạn có thể muốn đưa dữ liệu của mình vào một dashboard. Một trong những khía cạnh quan trọng nhất của việc chuẩn bị dữ liệu là sắp xếp nó theo một định dạng nhất định để trình bày cho các bên liên quan hoặc khách hàng.
Một tùy chọn là xoay vòng qua từng trang tính theo cách thủ công, sắp xếp các cột cần thiết, sau đó tiến hành bước tiếp theo. Nhưng tại sao không để VBA làm điều đó cho bạn?
Mục đích của đoạn code dưới đây là duyệt qua từng trang tính có sẵn trong workbook và dựa trên các cột được chỉ định, sắp xếp dữ liệu có sẵn.
Đây là cách bạn có thể sắp xếp các cột trên nhiều trang tính:
Sub SortWS()
Dim ws As Worksheet
'Activate the intended worksheet
Workbooks("Financial Sample.xlsx").Activate
'Cycle through each individual worksheet automatically using for loop
For Each ws In ActiveWorkbook.Sheets
'activate each individual worksheet
ws.Activate
'Define the range and then sort the column basis your requirements. In this case, only one column in being sorted.
Range("A1", Range("p1").End(xlDown)).sort Key1:=Range("E1"), Order1:=xlDescending, Header:=xlYes
'Command used to cycle to the next worksheet, once the previous worksheet has been sorted
Next ws
End Sub
Tất cả thông tin bắt đầu bằng dấu ngoặc kép đều là comment VBA. Chúng không được chạy trong giai đoạn thực thi. Tuy nhiên, mọi comment VBA mà bạn thêm đều là sự bổ sung có ý nghĩa cho code, vì bạn có thể xác định bản chất, chức năng và nhiều phần có liên quan khác trong các phần code.
5. Sao chép dữ liệu được sắp xếp từ trang tính này sang trang tính khác
Hãy tưởng tượng một tình huống mà bạn muốn sắp xếp dữ liệu và sao chép toàn bộ tập dữ liệu (hoặc các phần của tập dữ liệu đó) vào một trang tính mới được thêm vào. Trong những trường hợp như vậy, bạn có thể sử dụng code dưới đây để thực hiện tác vụ này:
Sub SortWS()
Dim ws As Worksheet
'Activate the intended worksheet
Workbooks("Financial Sample.xlsx").Activate
'Cycle through each individual worksheet automatically using for loop
For Each ws In ActiveWorkbook.Sheets
'activate each individual worksheet
ws.Activate
'Define the range and then sort the column basis your requirements.
'In this case, only one column in being sorted.
Range("A1", Range("p1").End(xlDown)).sort Key1:=Range("E1"), Order1:=xlDescending, Header:=xlYes
'Command used to cycle to the next worksheet, once the previous worksheet has been sorted
Next ws
'Create a new worksheet within the workbook to store the new data
ActiveWorkbook.Sheets.Add.Name = "Results"
'Copy paste the sorted data into the newly added sheet
Sheets("Sheet1").Range("A1:p701").Copy Destination:=Sheets("Results").Range("a1")
End Sub
Đoạn code trên sẽ sắp xếp các giá trị trong cột E, thêm một trang tính mới Results vào workbook hiện có và dán kết quả đã sắp xếp vào ô A1.
Excel VBA là một ngôn ngữ tiện lợi có thể giúp bạn tiết kiệm rất nhiều thời gian và công sức. Bằng cách sử dụng macro VBA, bạn có thể tạo các daskboard mở rộng, dễ dàng sắp xếp dữ liệu với một vài cú nhấp chuột và thực hiện nhiều chức năng khác nhau một cách dễ dàng.
Chúc bạn thực hiện thành công!