Sắp xếp các trang tính trong sổ làm việc bằng VBA trong Microsoft Excel
Trong bài viết này, chúng tôi đã cung cấp chi tiết về cách sắp xếp các trang tính trong sổ làm việc theo thứ tự tăng dần hoặc giảm dần, tùy thuộc vào tên trang tính.
Trong sổ làm việc đính kèm, có hai mô-đun: – Mô-đun1 chứa macro “SortWorksheets” được gán cho nút “Gửi” trên trang tính “Macro”.
Macro này sắp xếp tất cả các trang tính ngoại trừ trang tính đầu tiên là trang tính chính có tên là “Macro”.
Khi người dùng nhấp vào nút “Gửi”, tất cả các trang tính sau trang tính “Macro” sẽ được sắp xếp theo thứ tự tăng dần hoặc giảm dần do người dùng chọn trong hộp tổ hợp.
Module2 chứa hai macro “AscendingSortOfWorksheets” và “DecendingSortOfWorksheets”. Khi chạy macro “AscendingSortOfWorksheets”, nó sẽ sắp xếp tất cả các trang tính có trong sổ làm việc theo thứ tự tăng dần. Khi chạy macro “DecendingSortOfWorksheets”, nó sẽ sắp xếp tất cả các trang tính có trong sổ làm việc theo thứ tự giảm dần.
Giải thích logic
Thuật toán sắp xếp bong bóng được sử dụng để sắp xếp các trang tính trong sổ làm việc.
Thuật toán sắp xếp bong bóng so sánh từng mục trong mảng với các mục khác trong mảng và hoán đổi chúng tùy thuộc vào việc sắp xếp theo thứ tự tăng dần hay giảm dần. Trong mỗi bước, nó sẽ bong bóng giá trị nhỏ nhất hoặc lớn nhất lên đầu mảng. Thuật toán lặp lại cho đến khi tất cả các mục được sắp xếp.
Trong bài viết này, mục tiêu của chúng tôi là sắp xếp các trang tính trong sổ làm việc theo tên của chúng. Workbook mà chúng tôi đang sử dụng bao gồm các bảng tính khác nhau có tên như Bảng điều khiển tài chính, Nguồn nhân lực và Bảng điều khiển bán hàng.
Để đạt được mục tiêu này, chúng tôi đã sử dụng thuật toán sắp xếp Bong bóng để sắp xếp các trang tính.
Giải thích mã
SortWorksheets Macro
Macro này sẽ chạy khi người dùng nhấp vào nút gửi. Macro này sẽ sắp xếp tất cả các trang tính trong sổ làm việc theo tên của chúng ngoại trừ trang tính đầu tiên trong sổ làm việc. Tùy thuộc vào giá trị được người dùng chọn trong hộp tổ hợp, nó sẽ sắp xếp các trang tính theo thứ tự tăng dần hoặc giảm dần.
Để thêm hộp kết hợp, hãy làm theo các bước sau: -. Chuyển đến tab Nhà phát triển> Nhấp vào Chèn> Nhấp vào biểu tượng hộp tổ hợp dưới điều khiển biểu mẫu
-
Nhấp chuột phải vào hộp tổ hợp và nhấp vào điều khiển định dạng.
-
Chuyển đến tab điều khiển, Gán mục và liên kết hộp tổ hợp với ô XFC1.
ComboBoxValue = Range (“XFC1”). Hộp Tổ hợp giá trị trên trang tính “Macro” được liên kết với ô XFC1. Vì vậy, để nhận giá trị từ ô XFC1, biến ComboBoxValue được sử dụng.
For i = 2 To SCount – 1 Vòng lặp FOR bắt đầu với biến i, giá trị bắt đầu từ 2 vì chúng ta muốn loại trừ trang tính đầu tiên của sổ làm việc khỏi việc sắp xếp.
Nếu ComboBoxValue = 1 Thì điều kiện IF được sử dụng để kiểm tra xem nên sắp xếp theo thứ tự tăng dần hay giảm dần. Nếu giá trị ComboBoxValue là 1 thì sắp xếp theo thứ tự tăng dần, ngược lại là thứ tự giảm dần.
Các bảng tính được sắp xếp theo thứ tự tăng dần
Các bảng tính được sắp xếp theo thứ tự giảm dần
AscendingSortOfWorksheets và DecendingSortOfWorksheets
Có thể chạy macro AscendingSortOfWorksheets và DecendingSortOfWorksheets bằng cách nhấn tổ hợp phím tắt Alt + F8 hoặc Chuyển đến tab Nhà phát triển> Nhấp vào Macro> chọn macro và nhấp vào chạy. Họ sẽ sắp xếp tất cả các trang tính có bên trong sổ làm việc. Các macro này cũng có thể chạy trên các sổ làm việc khác.
Các bảng tính được sắp xếp sau khi chạy macro AscendingSortOfWorksheets
Các bảng tính được sắp xếp theo thứ tự tăng dần Macro DecendingSortOfWorksheets
Vui lòng theo dõi bên dưới để biết mã
Sub AscendingSortOfWorksheets() 'Sort worksheets in a workbook in ascending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name < Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub Sub DecendingSortOfWorksheets() 'Sort worksheets in a workbook in descending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name > Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub
Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.
Chúng tôi rất muốn nghe ý kiến từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]