5 Microsoft Excel Macro tuyệt vời để sắp xếp dữ liệu | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

5 Microsoft Excel Macro tuyệt vời để sắp xếp dữ liệu

Chia sẻ kiến thức 15/02/2022

Việc quản lý dữ liệu của bạn sẽ trở nên dễ dàng với các Excel macro dưới đây.

 

Các macro trong Excel có thể không toàn diện như các công cụ tự động hóa khác, nhưng đừng đánh giá thấp khả năng của chúng. Nếu bạn làm việc nhiều với Excel và các công cụ Microsoft Office khác như Word và Access, chúng sẽ giúp ích rất nhiều cho bạ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 trang tổng quan (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 công việc sắp xếp dữ liệu trong Excel, hãy thử các macro sau đây. 

1. Tải xuống tập dữ liệu giả

Trước hết, bạn có thể tải xuống một tập dữ liệu giả để tập luyện các kỹ năng macro của mình.

Hãy yên tâm, khi bạn hiểu rõ hơn về cách mọi thứ hoạt động, bạn có thể thay đổi code sao cho phù hợp với file excel của bạn. 

Bạn có thể tải xuống tập dữ liệu được sử dụng trong bài viết này tại đây. 

Tải xuống: Tập dữ liệu Excel

2. Sắp xếp một cột bằng Excel Macro

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 bạn đã tải xuống tập dữ liệu giả, bạn có thể thử sắp xếp cột E (Units sold, hay Đơn vị đã bán).

Mở một tệp Excel mới và lưu nó dưới dạng Excel Macro-Enabled (.xlsm) . Tệp này sẽ lưu trữ macro để sắp xếp dữ liệu của bạn từ tệp khác.

Bạn sẽ kiểm soát (các) tệp của mình từ tệp macro này:

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)
  • Tiêu đề: Nếu nội dung của bạn có tiêu đề, tùy chọn này sẽ vẫn là xlYes. Nếu không, hãy chọn xlNo.

Phạm vi (range) 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.

3. Sắp xếp dữ liệu động trong một cột

Trong một số trường hợp điểm bắt đầu của bạn được xác định nhưng điểm cuối của bạn là động. Trong trường hợp như vậy, bạn có thể để code tự động tìm ra phần cuối của phạm vi.

Để đáp ứng sự thay đổi về 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): Chức năng 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 này 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.

4. 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 trong 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

5. 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 trang tổng quan (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ó và định dạng theo một cách nhất định để trình bày cho các bên liên quan hoặc khách hàng của bạn.

Một lựa chọn là đi 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 file excel 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à VBA comment (nhận xét VBA) Chúng không được thực thi trong giai đoạn thực thi. Tuy nhiên, mọi nhận xét VBA mà bạn thêm là một bổ sung có ý nghĩa cho code, vì bạn có thể xác định bản chất, chức năng và các phần có liên quan khác trong các phần code.

6. 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:

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 (Kết quả) vào file hiện có và dán kết quả đã sắp xếp vào ô A1.

7. Tạo Macro sắp xếp trong Excel

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 trang tổng quan 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 các chức năng khác nhau một cách dễ dàng.

Dịch từ: https://www.makeuseof.com/excel-macros-for-sorting-data/

>>> Nếu bạn đang có nhu cầu học lập trình trực tuyến, tìm hiểu ngay tại đây:

>>> Xem thêm bài viết:

Đại học trực tuyến? Tại sao nên chọn học đại học trực tuyến thay vì đại học offline?

5 điều có thể bạn chưa biết về học lập trình trực tuyến FUNiX

Review khóa học trực tuyến FUNiX FPT đang được nhiều bạn trẻ lựa chọn

FUNiX đào tạo lập trình trực tuyến cung cấp nhân sự tập đoàn FPT

5 Điểm đáng chú ý tại khóa học lập trình trực tuyến FPT – FUNiX

Vân Nguyễn

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại