Bảng chữ cái trong bảng tính các tab (Microsoft Excel)
Pat tự hỏi liệu có cách nào nhanh chóng để sắp xếp thứ tự bảng chữ cái trong sổ làm việc của cô ấy không. Không có phương pháp tích hợp nào để thực hiện việc này, nhưng bạn có thể sử dụng macro để thực hiện việc phân loại. Tôi sẽ trình bày hai cách tiếp cận trong mẹo này. Đầu tiên cung cấp một cách đơn giản để thực hiện việc phân loại.
Sub SortSheets1() Dim I As Integer Dim J As Integer For I = 1 To Sheets.Count - 1 For J = I + 1 To Sheets.Count If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then Sheets(J).Move Before:=Sheets(I) End If Next J Next I End Sub
Macro này sắp xếp các tab trang tính theo tên theo thứ tự tăng dần. Nếu bạn muốn sắp xếp chúng theo thứ tự giảm dần, tất cả những gì bạn cần làm là thay đổi dấu> ở dòng chính giữa thành <.
Macro hoạt động tốt nếu bạn có số lượng trang tính tương đối thấp trong sổ làm việc của mình. Nếu, khi bạn chạy macro, bạn lưu ý rằng phải mất rất nhiều thời gian để chạy, bạn có thể muốn sử dụng thuật toán sắp xếp hiệu quả hơn trong macro. Ví dụ: sau đây là phiên bản đọc tên của tất cả các trang tính vào một mảng, sắp xếp mảng bằng thuật toán BubbleSort và sau đó sắp xếp thực tế:
Sub SortSheets2() Dim I As Integer Dim sMySheets() As String Dim iNumSheets As Integer iNumSheets = Sheets.Count Redim sMySheets(1 To iNumSheets) For I = 1 To iNumSheets sMySheets(I) = Sheets(I).Name Next I BubbleSort sMySheets For I = 1 To iNumSheets Sheets(sMySheets(I)).Move Before:=Sheets(I) Next I End Sub
Sub BubbleSort(sToSort() As String) Dim Lower As Integer Dim Upper As Integer Dim I As Integer Dim J As Integer Dim K As Integer Dim Temp As String Lower = LBound(sToSort) Upper = UBound(sToSort) For I = Lower To Upper - 1 K = I For J = I + 1 To Upper If sToSort(K) > sToSort(J) Then K = J End If Next J If I <> K Then Temp = sToSort(I) sToSort(I) = sToSort(K) sToSort(K) = Temp End If Next I End Sub
Bất cứ ai đã lập trình một thời gian đều biết rằng BubbleSort là một quy trình sắp xếp có mục đích chung tốt, nhưng có những quy trình nhanh hơn có sẵn.
Ví dụ: nếu bạn có khá nhiều trang tính và chúng bắt đầu rất vô tổ chức, bạn có thể thấy rằng thuật toán QuickSort có lợi hơn. Tất cả những gì bạn cần làm để thay đổi điều trên để sử dụng QuickSort là thêm thuật toán QuickSort làm chương trình con (bạn có thể tìm thuật toán trong bất kỳ cuốn sách lập trình Visual Basic hay nào) và sau đó gọi thủ tục từ bên trong macro SortSheets chính. (Điều này có nghĩa là thay đổi dòng mà BubbleSort bây giờ được gọi.)
Có một sự khác biệt giữa macro thứ hai này và macro đầu tiên. Macro đầu tiên không chú ý đến trường hợp của văn bản được sử dụng để đặt tên cho các trang tính của bạn. Do đó, MyWorksheet sẽ được xem giống như MYWORKsheet. Macro thứ hai chú ý đến trường hợp văn bản và sắp xếp tương ứng. Tất nhiên, đây không phải là một vấn đề đặc biệt lớn, vì Excel cũng không chú ý đến chữ hoa trong tên trang tính.
Chỉ cần lưu ý nhanh: Quy trình BubbleSort được hiển thị ở trên có mục đích chung về bản chất. Điều đó có nghĩa là nó sẽ hoạt động để sắp xếp bất kỳ mảng nào, không chỉ để sắp xếp tên của các tab trang tính.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (13440) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.
Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: