Chuck đã viết về nhu cầu mà anh ấy phải sắp xếp các bản ghi trong một trang tính dựa trên màu tô được sử dụng trong một ô. Excel không cung cấp hàm nội tại để thực hiện một hành động như vậy, nhưng có thể tạo một hàm do người dùng xác định sẽ giúp thực hiện bất kỳ việc sắp xếp nào cần được thực hiện. Hãy xem xét macro sau:

Function GetFillColor(rng As Range) As Long     GetFillColor = rng.Interior.ColorIndex End Function

Giả sử màu tô nằm trong các ô của cột A, tất cả những gì bạn cần làm là đảm bảo có một cột trống B. Sau đó đặt công thức sau vào ô B2 và sao chép nó cho mỗi bản ghi:

=GetFillColor(A2)

Khi bạn làm xong, cột B sẽ chứa các giá trị chỉ số của mỗi màu tô được sử dụng trong cột A. Sau đó, bạn có thể sắp xếp theo cột B, cột này có kết quả là nhóm tất cả các màu tô tương tự lại với nhau.

Ví dụ, nếu bạn cần phải chi tiết hơn, nếu bạn cần sắp xếp theo một thứ tự cụ thể (màu vàng thứ nhất, thứ hai màu đỏ, thứ ba màu xanh lá cây, v.v.), thì bạn không thể chỉ dựa vào giá trị chỉ số của màu tô. Trong trường hợp như vậy, bạn phải dựa vào một phương pháp trả về màu khác.

Hãy xem xét macro sau:

Function GetColor(rngIndex As Range, rngSource As Range) As Long     Dim lngColor As Long     Dim J As Integer

Application.Volatile     lngColor = rngSource.Interior.ColorIndex

GetColor = 99       'Set to default color     For J = 1 To rngIndex.Count         If rngIndex(J).Interior.ColorIndex = lngColor Then             GetColor = J         End If     Next J End Function

Macro này hoạt động khác với macro cuối cùng. Nó yêu cầu hai phạm vi hoạt động bình thường. Phạm vi đầu tiên về cơ bản là một bảng màu cho biết thứ tự mà bạn muốn sắp xếp các màu. Ví dụ: các ô từ E1 đến E9 có thể chứa chín màu bạn muốn sử dụng để sắp xếp, theo thứ tự bạn muốn chúng được sắp xếp. Sau đó, bạn sẽ đặt công thức sau vào ô B2 và sao chép nó cho mỗi bản ghi:

=GetColor($E$1:$E$9,A2)

Kết quả là cột B sẽ chứa các giá trị từ 1 đến 9, đại diện cho các màu trong bảng màu của bạn. Nếu màu trong một ô không có màu tương ứng trong bảng màu, thì hàm trả về giá trị là 99. Khi bạn sắp xếp các bản ghi trong bảng của mình, bạn sẽ sắp xếp chúng theo ý muố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 (2009) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.