Steve muốn tạo một câu lệnh IF (sử dụng hàm trang tính) dựa trên màu của một ô. Ví dụ: nếu A1 có màu xanh lá cây, anh ta muốn trả lại từ “đi”, nếu nó có màu đỏ, anh ta muốn trả lại từ “dừng”, và nếu nó là bất kỳ màu nào khác thì trả lại từ “không” . Steve thích không sử dụng macro để làm điều này.

Thật không may, không có cách nào để hoàn thành nhiệm vụ này một cách có thể chấp nhận được mà không sử dụng macro, ở dạng này hay dạng khác. Giải pháp không macro gần nhất là tạo tên xác định màu sắc, theo cách này:

  1. Chọn ô A1.

  2. Nhấp vào Chèn | Tên | Định nghĩa. Excel sẽ hiển thị hộp thoại Xác định Tên.

  3. Sử dụng tên chẳng hạn như “mycolor” (không có dấu ngoặc kép).

  4. Trong hộp Tham khảo, hãy nhập nội dung sau, dưới dạng một dòng:

  5. Bấm OK.

Với tên này được xác định, bạn có thể, trong bất kỳ ô nào, nhập như sau:

=mycolor

Kết quả là bạn sẽ thấy văn bản dựa trên màu của ô mà bạn đặt công thức này. Tất nhiên, hạn chế của phương pháp này là nó không cho phép bạn tham chiếu đến các ô khác với ô mà công thức được đặt.

Sau đó, giải pháp là sử dụng một hàm do người dùng định nghĩa, đó là (theo định nghĩa) là một macro. Macro có thể kiểm tra màu mà ô được tô và sau đó trả về giá trị. Ví dụ: ví dụ sau trả về một trong ba từ, dựa trên màu sắc trong ô đích:

Function CheckColor1(range)

If range.Interior.Color = RGB(256, 0, 0) Then         CheckColor1 = "Stop"

ElseIf range.Interior.Color = RGB(0, 256, 0) Then         CheckColor1 = "Go"

Else         CheckColor1 = "Neither"

End If End Function

Macro này đánh giá các giá trị RGB của các màu trong một ô và trả về một chuỗi dựa trên các giá trị đó. Bạn có thể sử dụng hàm trong một ô theo cách sau:

=CheckColor1(B5)

Nếu bạn thích kiểm tra màu chỉ mục thay vì màu RGB, thì biến thể sau sẽ hoạt động:

Function CheckColor2(range)

If range.Interior.ColorIndex = 3 Then         CheckColor2 = "Stop"

ElseIf range.Interior.ColorIndex = 4 Then         CheckColor2 = "Go"

Else         CheckColor2 = "Neither"

End If End Function

Cho dù bạn đang sử dụng phương pháp tiếp cận RGB hay phương pháp chỉ số màu, bạn sẽ muốn kiểm tra để đảm bảo rằng các giá trị được sử dụng trong macro phản ánh các giá trị thực tế được sử dụng cho các màu trong ô bạn đang kiểm tra. Nói cách khác, Excel cho phép bạn sử dụng các sắc thái khác nhau của màu xanh lá cây và màu đỏ, vì vậy bạn sẽ muốn đảm bảo rằng các giá trị RGB và giá trị chỉ số màu được sử dụng trong macro khớp với các giá trị được sử dụng bởi các sắc thái màu trong ô của bạn.

Một cách bạn có thể làm là sử dụng một macro rất đơn giản không làm gì khác ngoài việc trả về giá trị chỉ số màu:

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

Bây giờ, trong trang tính của bạn, bạn có thể sử dụng như sau:

=GetFillColor(B5)

Kết quả là giá trị chỉ số màu của ô B5 được hiển thị. Giả sử rằng ô B5 được định dạng bằng một trong các màu bạn mong đợi (đỏ hoặc xanh lá cây), bạn có thể cắm lại giá trị chỉ mục vào các macro trước đó để có được kết quả mong muốn. Tuy nhiên, bạn có thể đơn giản bỏ qua bước đó và dựa vào giá trị được trả về bởi GetFillColor để kết hợp công thức IF, theo cách này:

=IF(GetFillColor(B5)=4,"Go", IF(GetFillColor(B5)=3,"Stop", "Neither"))

Bạn sẽ cần lưu ý rằng các hàm này (cho dù bạn nhìn vào giá trị màu RGB hay giá trị chỉ số màu) sẽ kiểm tra định dạng rõ ràng của một ô. Họ không tính đến bất kỳ định dạng ngầm nào, chẳng hạn như được áp dụng thông qua định dạng có điều kiện.

Để biết thêm một số ý tưởng, công thức và chức năng hay khác khi làm việc với màu sắc, hãy tham khảo trang này tại trang web của Chip Pearson:

http://www.cpearson.com/excel/colors.aspx

_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 (10780) áp dụng cho Microsoft Excel 2007 và 2010. 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: