Neil sử dụng màu sắc rất nhiều trong bảng tính của mình. Anh ấy biết rằng anh ấy có thể tạo màu dựa trên giá trị RGB dạng số [như đã giải thích trong các vấn đề về Mẹo Excel khác]. Neil muốn làm ngược lại—xác định giá trị RGB. Anh ấy tự hỏi liệu có cách nào để trả về [thông qua hàm hoặc macro] giá trị RGB của màu được sử dụng để tô một ô không. [Neil muốn màu thực tế được áp dụng cho ô, không phải bất kỳ màu "ghi đè" nào, chẳng hạn như màu do định dạng có điều kiện áp đặt. ]
Excel không có hàm để thực hiện việc này, nhưng nếu bạn chỉ cần kiểm tra các giá trị RGB cho một ô, cách dễ nhất là làm theo các bước sau
- Chọn ô được định dạng với màu bạn muốn kiểm tra
- Hiển thị tab Trang chủ của dải băng
- Nhấp vào mũi tên xuống ở bên phải của công cụ Tô màu, trong nhóm Phông chữ. Excel hiển thị một bảng màu nhỏ và một số tùy chọn khác
- Chọn nhiều màu sắc hơn. Excel hiển thị hộp thoại Màu
- Đảm bảo rằng tab Tùy chỉnh được hiển thị. [Xem Hình 1. ]
- Ở dưới cùng của hộp thoại, bạn có thể thấy các giá trị riêng lẻ cho các thành phần màu đỏ, lục và lam của màu trong ô
- Nhấn OK khi hoàn tất
Hình 1. Tab Tùy chỉnh của hộp thoại Màu
Nếu bạn có nhu cầu lấy các giá trị thường xuyên hơn, thì cách tốt nhất là tạo hàm do người dùng xác định của riêng bạn. Chức năng bạn sử dụng phụ thuộc vào những gì bạn muốn thực sự đã trở lại trang tính của bạn. Chẳng hạn, nếu bạn muốn trả về mã hex sáu ký tự truyền thống cho các màu RGB, bạn sẽ sử dụng macro rất đơn giản sau đây
Function getRGB1[rcell] As String Dim sColor As String sColor = Right["000000" & Hex[rcell.Interior.Color], 6] getRGB1 = Right[sColor, 2] & Mid[sColor, 3, 2] & Left[sColor, 2] End Function
Macro này xem xét màu bên trong của bất kỳ ô nào bạn tham chiếu, đặt các giá trị hex cho màu theo đúng thứ tự và trả về chuỗi cho Excel. Để sử dụng hàm, bạn chỉ cần gọi hàm đó, trong trang tính của mình, với một ô được tham chiếu theo cách này
=getRGB1[B4]
Tuy nhiên, bạn có thể không muốn các mã hex truyền thống cho các màu RGB. Nếu bạn muốn nhận các giá trị thập phân cho từng màu, thì macro sau sẽ trả về giá trị đó
Function getRGB2[rcell] As String Dim C As Long Dim R As Long Dim G As Long Dim B As Long C = rcell.Interior.Color R = C Mod 256 G = C \ 256 Mod 256 B = C \ 65536 Mod 256 getRGB2 = "R=" & R & ", G=" & G & ", B=" & B End Function
Được gọi giống như macro getRGB1, phiên bản này trả về một chuỗi chẳng hạn như "R=255, G=204, B=0". Bạn cũng có thể sửa đổi macro hơn nữa để nó trả về một giá trị duy nhất, dựa trên tham số bạn đã đặt
Function getRGB3[rcell As Range, Optional opt As Integer] As Long Dim C As Long Dim R As Long Dim G As Long Dim B As Long C = rcell.Interior.Color R = C Mod 256 G = C \ 256 Mod 256 B = C \ 65536 Mod 256 If opt = 1 Then getRGB3 = R ElseIf opt = 2 Then getRGB3 = G ElseIf opt = 3 Then getRGB3 = B Else getRGB3 = C End If End Function
Để sử dụng macro, chỉ cần thêm tham số thứ hai vào hàm được sử dụng trong trang tính của bạn, chỉ định những gì bạn muốn
=getRGB3[B4,1]
Nếu tham số thứ hai là 1, thì hàm chỉ trả về giá trị màu đỏ. Nếu bạn chỉ định tham số thứ hai là 2, thì giá trị màu lục sẽ được trả về và 3 sẽ trả về giá trị màu xanh lam. Bất kỳ giá trị nào khác cho tham số thứ hai [hoặc nếu bạn bỏ qua nó hoàn toàn] sẽ trả về giá trị thập phân đầy đủ của màu bên trong
Nếu bạn không muốn đi theo con đường tạo macro hoặc nếu bạn muốn xác định màu sắc không chỉ trong trang tính Excel của mình, thì bạn có thể cân nhắc sử dụng tiện ích của bên thứ ba. Một thứ có vẻ thú vị là Instant Eyedropper, miễn phí. Bạn có thể tìm thêm thông tin về nó ở đây
Vanita hỏi liệu có cách nào để chọn các ô chứa một màu cụ thể không. Hoàn thành nhiệm vụ dễ dàng nếu bạn đang sử dụng Excel 2003. Chỉ cần làm theo các bước sau
- Nhấn Ctrl+F để hiển thị tab Tìm của hộp thoại Tìm và Thay thế. [Xem Hình 1. ]
- Đảm bảo không có gì trong hộp Find What
- Nhấp vào Định dạng. [Bạn có thể cần nhấp vào Tùy chọn để xem nút Định dạng. ] Excel hiển thị hộp thoại Find Format
- Đảm bảo tab Mẫu được hiển thị. [Xem Hình 2. ]
- Từ các màu có sẵn, chọn màu bạn muốn tìm
- Bấm OK để đóng hộp thoại Tìm định dạng
- Nhấp vào Tìm tất cả. Hộp thoại Tìm và Thay thế mở rộng để hiển thị địa chỉ của tất cả các ô được định dạng bằng màu bạn đã chỉ định trong bước 5. [Xem Hình 3. ]
- Nhấp vào một trong các địa chỉ ô ở cuối hộp thoại. Excel chọn ô trong bảng tính thực tế
- Nhấn Ctrl + A. Tất cả các địa chỉ trong hộp thoại được chọn
- Nhấp vào Đóng. Tất cả các ô có màu mong muốn được chọn
Hình 1. Tab Tìm của hộp thoại Tìm và Thay thế
Hình 2. Tab Mẫu của hộp thoại Tìm Định dạng
Hình 3. Hộp thoại Tìm và Thay thế được mở rộng
Nếu bạn đang sử dụng Excel 97, Excel 2000 hoặc Excel 2002, cách duy nhất để chọn các ô có màu cụ thể là sử dụng macro. Xem xét macro hiển thị ở đây
Sub SelectColoredCells[] Dim rCell As Range Dim lColor As Long Dim rColored As Range 'Select the color by name [8 possible] 'vbBlack, vbBlue, vbGreen, vbCyan, 'vbRed, vbMagenta, vbYellow, vbWhite lColor = vbBlue 'If you prefer, you can use the RGB function 'to specify a color 'lColor = RGB[0, 0, 255] Set rColored = Nothing For Each rCell In Selection If rCell.Interior.Color = lColor Then If rColored Is Nothing Then Set rColored = rCell Else Set rColored = Union[rColored, rCell] End If End If Next If rColored Is Nothing Then MsgBox "No cells match the color" Else rColored.Select MsgBox "Selected cells match the color:" & _ vbCrLf & rColored.Address End If Set rCell = Nothing Set rColored = Nothing End Sub
Để sử dụng macro, hãy chọn một dải ô trước khi chạy macro. Sau đó, macro sẽ duyệt qua từng ô đã chọn và so sánh màu của ô đó với bất kỳ màu nào bạn chỉ định trong lColor. Nếu tìm thấy kết quả khớp thì ô đó sẽ được thêm vào tập hợp lựa chọn. Khi hoàn thành, macro chỉ chọn những ô phù hợp rồi thoát
Nếu bạn muốn tìm hiểu các giải pháp dựa trên macro khác, bạn có thể tham khảo bài viết sau tại Cơ sở tri thức Microsoft