Excel cho phép bạn sắp xếp dữ liệu trong trang tính của mình theo bất kỳ số lượng thuộc tính nào. Tuy nhiên, một trong những điều mà bạn không thể sắp xếp về bản chất là màu của ô — ít nhất là không cập nhật lên Excel 2007 trở lên. Đối với một số ứng dụng, đây có thể là một tính năng rất tiện dụng.

Macro sau, SortByColor, sẽ sắp xếp một bảng dựa trên màu mà một ô được định dạng.

Sub SortByColor()

On Error GoTo SortByColor_Err

Dim sRangeAddress As String     Dim sStartCell As String     Dim sEndCell As String     Dim rngSort As Range     Dim rng As Range

Application.ScreenUpdating = False

sStartCell = InputBox("Enter the cell address of the " & _       "top cell in the range to be sorted by color" & _       Chr(13) & "i.e.  'A1'", "Enter Cell Address")



If sStartCell > "" Then         sEndCell = Range(sStartCell).End(xlDown).Address         Range(sStartCell).EntireColumn.Insert         Set rngSort = Range(sStartCell, sEndCell)

For Each rng In rngSort             rng.Value = rng.Offset(0, 1).Interior.ColorIndex         Next         Range(sStartCell).Sort Key1:=Range(sStartCell), _           Order1:=xlAscending, Header:=xlNo, _           Orientation:=xlTopToBottom         Range(sStartCell).EntireColumn.Delete     End If

SortByColor_Exit:

Application.ScreenUpdating = True     Set rngSort = Nothing     Exit Sub

SortByColor_Err:

MsgBox Err.Number & ": " & Err.Description, _       vbOKOnly, "SortByColor"

Resume SortByColor_Exit End Sub

Macro hoạt động bằng cách hỏi bạn ô đầu tiên của dải ô bạn muốn sắp xếp. Đây phải là ô cao nhất trong phạm vi. Sau đó, macro sẽ chèn một cột (chỉ là tạm thời) trong đó các giá trị màu có thể được lưu trữ. Sau đó, nó bước qua từng ô trong phạm vi được xác định bởi ô bắt đầu mà bạn đã chỉ định.

SortByColor giả sử bảng dữ liệu của bạn không có hàng tiêu đề. Nếu có, bạn nên thay đổi lệnh sắp xếp thực tế. Chỉ cần thay đổi Header: = xlNo thành Header: = xlYes.

Bạn nên lưu ý rằng macro SortByColor sẽ chỉ sắp xếp các ô dựa trên màu rõ ràng được áp dụng cho ô, nó sẽ không sắp xếp nếu màu của ô là kết quả của định dạng có điều kiện.

_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 (3122) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: